<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Cheetah Software: Graphics3D.cpp Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Cheetah Software
   &#160;<span id="projectnumber">1.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="../../index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="../../namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="../../annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="../../files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="../../search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="../../files.html"><span>File&#160;List</span></a></li>
      <li><a href="../../globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('d7/d90/_graphics3_d_8cpp_source.html','../../');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Graphics3D.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="../../d7/d90/_graphics3_d_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d2/de7/_graphics3_d_8h.html">Graphics3D.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../de/df0/utilities_8h.html">Utilities/utilities.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;GL/glut.h&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment">// background color</span></div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="../../d7/d90/_graphics3_d_8cpp.html#af71db2fb04cedbd9e3c5ecfef59668f5">   16</a></span>&#160;<span class="keyword">static</span> constexpr <span class="keyword">auto</span> <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#af71db2fb04cedbd9e3c5ecfef59668f5">clearColor</a> = <a class="code" href="../../dc/daa/_colors_8h.html#a8b1b724c488ffbaa024bb0e9088e447b">windows2000</a>;</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment">// shader program for drawing models where each vertex is assigned a color</span></div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="../../d7/d90/_graphics3_d_8cpp.html#a7637747bcff189f2336ced5c6ed13730">   19</a></span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#a7637747bcff189f2336ced5c6ed13730">vertexShaderSourceColorArray</a>[] = R<span class="stringliteral">&quot;(</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="stringliteral">// inputs:</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="stringliteral">attribute highp vec3 posAttr;   // position</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="stringliteral">attribute lowp vec3 colAttr;      // color</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="stringliteral">attribute highp vec3 normAttr;  // normal</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="stringliteral">uniform highp mat4 matrix;      // transformation</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="stringliteral">// outputs:</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="stringliteral">varying lowp vec4 col;          // color</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="stringliteral">varying vec3 normal;            // normal</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="stringliteral">varying vec3 pos_world;         // position</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="stringliteral">void main() {</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="stringliteral">  col = vec4(colAttr,1);</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="stringliteral">  gl_Position = matrix * vec4(posAttr,1);</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="stringliteral">  normal = (matrix * vec4(normAttr,0)).xyz;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="stringliteral">  pos_world = posAttr;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="stringliteral">}</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="stringliteral">)&quot;;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="stringliteral"></span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="stringliteral"></span><span class="comment">// shader program for drawing models where each vertex</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="../../d7/d90/_graphics3_d_8cpp.html#a5cbca7ba539de3dddd8a9621c3edcc8d">   38</a></span>&#160;<span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#a5cbca7ba539de3dddd8a9621c3edcc8d">vertexShaderSourceSolidColor</a>[] = R<span class="stringliteral">&quot;(</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="stringliteral">// inputs:</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="stringliteral">attribute highp vec3 posAttr;   // position</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="stringliteral">uniform lowp vec4 colUniform;          // color</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="stringliteral">attribute lowp vec3 colAttr;      // color</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="stringliteral">attribute highp vec3 normAttr;  // normal</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="stringliteral">uniform highp mat4 matrix;      // transformation</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="stringliteral">// outputs:</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="stringliteral">varying lowp vec4 col;          // color</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="stringliteral">varying vec3 normal;            // normal</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="stringliteral">varying vec3 pos_world;         // position</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="stringliteral">void main() {</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="stringliteral">  col = colUniform;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="stringliteral">  gl_Position = matrix * vec4(posAttr,1);</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="stringliteral">  normal = (matrix * vec4(normAttr,0)).xyz;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="stringliteral">  pos_world = posAttr;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="stringliteral">}</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="stringliteral">)&quot;;</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="stringliteral"></span></div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="../../d7/d90/_graphics3_d_8cpp.html#acfa44c88e7b6f3235e4b69bfe02936b8">   57</a></span>&#160;<span class="stringliteral"></span><span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#acfa44c88e7b6f3235e4b69bfe02936b8">fragmentShaderSource</a>[] = R<span class="stringliteral">&quot;(</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="stringliteral">varying lowp vec4 col;</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="stringliteral">varying vec3 pos_world;</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="stringliteral">varying vec3 normal;</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="stringliteral">void main() {</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="stringliteral">  vec3 light_pos = vec3(0,0,4);</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="stringliteral">  float light_dist = length(light_pos - pos_world);</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="stringliteral">  vec3 light_color = vec3(1,1,1);</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="stringliteral">  vec3 mat_ambient = vec3(.1,.1,.1);</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="stringliteral">  vec3 mat_spec    = vec3(.3,.3,.3);</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="stringliteral">  vec3 n = normalize(normal);</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;<span class="stringliteral">  vec3 l = normalize(light_pos);</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="stringliteral">  float angle_thing = clamp( dot(-n,l), 0., 1.);</span></div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="stringliteral">  gl_FragColor = col + vec4(mat_ambient*light_color*40.*angle_thing/(light_dist*light_dist),0);</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="stringliteral">}</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="stringliteral">)&quot;;</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="stringliteral"></span></div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a25aaa7b3d8385228211e27380d84407f">   77</a></span>&#160;<span class="stringliteral"><a class="code" href="../../de/d6f/class_graphics3_d.html#a25aaa7b3d8385228211e27380d84407f">Graphics3D::Graphics3D</a>(QWidget *parent)</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;<span class="stringliteral">    : QOpenGLWidget(parent),</span></div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="stringliteral">      _animating(false),</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="stringliteral">      _colorArrayProgram(0),</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="stringliteral">      _frame(0),</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;<span class="stringliteral">      _v0(0, 0, 0),</span></div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="stringliteral">      _freeCamFilter(1, 60, _v0) {</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="stringliteral">  std::cout &lt;&lt; </span><span class="stringliteral">&quot;[SIM GRAPHICS] New graphics window. \n&quot;</span>;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[0] = 0.2422;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[0] = 0.1504;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[0] = 0.6603;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[1] = 0.2810;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[1] = 0.3228;</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[1] = 0.9579;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[2] = 0.1786;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[2] = 0.5289;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[2] = 0.9682;</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[3] = 0.0689;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[3] = 0.6948;</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[3] = 0.8394;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[4] = 0.2161;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[4] = 0.7843;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[4] = 0.5923;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[5] = 0.6720;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[5] = 0.7793;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[5] = 0.2227;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[6] = 0.9970;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[6] = 0.7659;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[6] = 0.2199;</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[7] = 0.9769;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[7] = 0.9839;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[7] = 0.0805;</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#abdd70a8fa862aec71ef91e79205c8035">  112</a></span>&#160;<a class="code" href="../../de/d6f/class_graphics3_d.html#abdd70a8fa862aec71ef91e79205c8035">Graphics3D::~Graphics3D</a>() {}</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a2ded7e2e203f7d660f4120e0b9e3ed61">  117</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a2ded7e2e203f7d660f4120e0b9e3ed61">Graphics3D::setupCheetah3</a>(<a class="code" href="../../d9/d8e/cpp_types_8h.html#a738072d0d6a7a632be68f6261501826b">Vec4&lt;float&gt;</a> color, <span class="keywordtype">bool</span> useOld) { <span class="keywordflow">return</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a1b2d94c539ac6c6e1f4ec3fb859888c9">addCheetah3</a>(color, useOld); }</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a49c53912e2868ee7d93cb0a3ed6d0f4b">  122</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a49c53912e2868ee7d93cb0a3ed6d0f4b">Graphics3D::setupMiniCheetah</a>(<a class="code" href="../../d9/d8e/cpp_types_8h.html#a738072d0d6a7a632be68f6261501826b">Vec4&lt;float&gt;</a> color, <span class="keywordtype">bool</span> useOld) { <span class="keywordflow">return</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a89c4a0327553343171fe6d948679f78c">addMiniCheetah</a>(color, useOld); }</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a5a26d600296dffb268108c84bfbb342f">  128</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a5a26d600296dffb268108c84bfbb342f">Graphics3D::updateCameraMatrix</a>() {</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.setToIdentity();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.perspective(</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;      60.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, <span class="keywordtype">float</span>(size().width()) / <span class="keywordtype">float</span>(size().height()), .001<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 50.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[0]) <a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a> -= <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> / 2.f;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[1]) <a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a> += <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> / 2.f;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[2]) <a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a> += <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> / 2.f;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[3]) <a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a> -= <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> / 2.f;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="../../de/d6f/class_graphics3_d.html#ac58b856e44f7c0a124ccecc0021525e1">_rotOrig</a>) {</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a> = coerce&lt;float&gt;(<a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a>, -180, 0);</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="comment">// velocity in camera coordinates</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">// we want the inverse transformation (coordinateRotation goes the opposite</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="comment">// way as QMatrix.rotate())</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <a class="code" href="../../d9/d8e/cpp_types_8h.html#a0b83d93a3c74d282558436e26c056896">RotMat&lt;float&gt;</a> R =</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;        coordinateRotation&lt;float&gt;(CoordinateAxis::Z, <a class="code" href="../../da/d9b/namespaceori.html#abb3365c40bad692ba94734339d8c9df9">deg2rad</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a>)) *</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;        coordinateRotation&lt;float&gt;(CoordinateAxis::X, <a class="code" href="../../da/d9b/namespaceori.html#abb3365c40bad692ba94734339d8c9df9">deg2rad</a>(_ry));</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <a class="code" href="../../d9/d8e/cpp_types_8h.html#a6f07728c866b15ff0676a9b2ebfd2ba6">Vec3&lt;float&gt;</a> v(<a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[0], <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[1], <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[2]);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    v = R * v;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="comment">// integrate and filter</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a77ec4a4e2f7033ee67db79b84bdd7867">_freeCamFilter</a>.<a class="code" href="../../dc/d6f/class_first_order_i_i_r_filter.html#a6b1e22e84349dfe5b4c166a9d46c5d4b">update</a>(v);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 3; i++)</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[i] += <a class="code" href="../../de/d6f/class_graphics3_d.html#a8040e69c06bbb0bafefeef46cf18d3e7">_frameTime</a> * <a class="code" href="../../de/d6f/class_graphics3_d.html#a77ec4a4e2f7033ee67db79b84bdd7867">_freeCamFilter</a>.<a class="code" href="../../dc/d6f/class_first_order_i_i_r_filter.html#a11abac204c75fb6ef53e830d052dfab1">get</a>()[i];</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="comment">// apply</span></div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.rotate(_ry, 1, 0, 0);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.rotate(<a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a>, 0, 0, 1);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.translate(<a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[0], <a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[1], <a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[2]);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.translate(0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, -.45<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a> * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a>);</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.rotate(<a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a>, 1, 0, 0);</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.rotate(<a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a>, 0, 0, 1);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad890ef439ce683da82d6300ae68f7c5d">_cameraTarget</a> = <a class="code" href="../../de/d6f/class_graphics3_d.html#ad890ef439ce683da82d6300ae68f7c5d">_cameraTarget</a> * 0.9 + <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#acdf51fca776b0e13bdbb756e40741442">getCameraOrigin</a>() * 0.1;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.translate(-<a class="code" href="../../de/d6f/class_graphics3_d.html#ad890ef439ce683da82d6300ae68f7c5d">_cameraTarget</a>[0],</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;                            -<a class="code" href="../../de/d6f/class_graphics3_d.html#ad890ef439ce683da82d6300ae68f7c5d">_cameraTarget</a>[1], 0);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;}</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a63ca25b61186ff59bd624b7f1f527e3b">  167</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a63ca25b61186ff59bd624b7f1f527e3b">Graphics3D::initializeGL</a>() {</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  std::cout &lt;&lt; <span class="stringliteral">&quot;[Graphics3D] Initialize OpenGL...\n&quot;</span>;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ad890ef439ce683da82d6300ae68f7c5d">_cameraTarget</a>.setZero();</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;  initializeOpenGLFunctions();</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;  <span class="comment">// create GPU shaders</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a> = <span class="keyword">new</span> QOpenGLShaderProgram(<span class="keyword">this</span>);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;addShaderFromSourceCode(QOpenGLShader::Vertex,</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                                              <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#a7637747bcff189f2336ced5c6ed13730">vertexShaderSourceColorArray</a>);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;addShaderFromSourceCode(QOpenGLShader::Fragment,</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                                              <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#acfa44c88e7b6f3235e4b69bfe02936b8">fragmentShaderSource</a>);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;link();</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a> = <span class="keyword">new</span> QOpenGLShaderProgram(<span class="keyword">this</span>);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;addShaderFromSourceCode(QOpenGLShader::Vertex,</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;                                              <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#a5cbca7ba539de3dddd8a9621c3edcc8d">vertexShaderSourceSolidColor</a>);</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;addShaderFromSourceCode(QOpenGLShader::Fragment,</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;                                              <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#acfa44c88e7b6f3235e4b69bfe02936b8">fragmentShaderSource</a>);</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;link();</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="comment">// setup attributes/uniforms (inputs to shaders)</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a20485c7a1ff5956dd899e90527324b18">_posAttrColorArray</a> = (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;attributeLocation(<span class="stringliteral">&quot;posAttr&quot;</span>);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aedadc120fa1496885078212dc7ac28e4">_colAttrColorArray</a> = (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;attributeLocation(<span class="stringliteral">&quot;colAttr&quot;</span>);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ad6c6cfb2c8a3ad45ed4b4a800d2e1405">_normAttrColorArray</a> =</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;      (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;attributeLocation(<span class="stringliteral">&quot;normAttr&quot;</span>);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a41a320a73f0a6439e988640a31c9ce5a">_matrixUniformColorArray</a> =</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;      (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;uniformLocation(<span class="stringliteral">&quot;matrix&quot;</span>);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a1208df0fe1f06f574c32661ddd7529ca">_posAttrSolidColor</a> = (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;attributeLocation(<span class="stringliteral">&quot;posAttr&quot;</span>);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ada4b2bd10cf6fb4f947bc28a9c808a9e">_colUniformSolidColor</a> =</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;uniformLocation(<span class="stringliteral">&quot;colUniform&quot;</span>);</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad8867817743b9f588cc472837d5a02">_colAttrSolidColor</a> = (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;attributeLocation(<span class="stringliteral">&quot;colAttr&quot;</span>);</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a6818e4ab43d79ec03536ae17494643a9">_matrixUniformSolidColor</a> =</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;      (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;attributeLocation(<span class="stringliteral">&quot;normAttr&quot;</span>);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#af61d4deba2823af20e7a8ee4ba566936">_normAttrSolidColor</a> = (GLuint)<a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;uniformLocation(<span class="stringliteral">&quot;matrix&quot;</span>);</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;  <span class="comment">// set clear color:</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  glClearColor(<a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#af71db2fb04cedbd9e3c5ecfef59668f5">clearColor</a>[0], <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#af71db2fb04cedbd9e3c5ecfef59668f5">clearColor</a>[1], <a class="code" href="../../d7/d90/_graphics3_d_8cpp.html#af71db2fb04cedbd9e3c5ecfef59668f5">clearColor</a>[2], 0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;}</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="comment">/*-----------------------------------------*</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="comment"> * Mouse Handlers for Orbit and Zoom       *</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="comment"> *-----------------------------------------*/</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a5586b9a611c9973859e607e24d7b72d6">  210</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a5586b9a611c9973859e607e24d7b72d6">Graphics3D::mousePressEvent</a>(QMouseEvent *event) {</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa29eb71732ed62ad434b89c82a5d7bd1">_orbiting</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a4f50df66f2955365d1e85d450a8fe5b1">_orbiting_x_start</a> = <span class="keyword">event</span>-&gt;pos().x();</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a409518e1b8146001fbaddaaac4d8f80a">_orbiting_y_start</a> = <span class="keyword">event</span>-&gt;pos().y();</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a77d7e3d1b4610344616dcdd00e12102d">_rx_base</a> = <a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a>;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aab5392611717fb665e7c0af46c0e3217">_ry_base</a> = <a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a>;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;}</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#ae9d5e85cf9f776c5ff83294b7d9253a9">  218</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#ae9d5e85cf9f776c5ff83294b7d9253a9">Graphics3D::mouseMoveEvent</a>(QMouseEvent *event) {</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="../../de/d6f/class_graphics3_d.html#aa29eb71732ed62ad434b89c82a5d7bd1">_orbiting</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a> = <a class="code" href="../../de/d6f/class_graphics3_d.html#a77d7e3d1b4610344616dcdd00e12102d">_rx_base</a> + <a class="code" href="../../de/d6f/class_graphics3_d.html#ae6f43e997bd50470a6661bf463573576">_pixel_to_rad</a> * (<span class="keyword">event</span>-&gt;pos().x() - <a class="code" href="../../de/d6f/class_graphics3_d.html#a4f50df66f2955365d1e85d450a8fe5b1">_orbiting_x_start</a>);</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a> = <a class="code" href="../../de/d6f/class_graphics3_d.html#aab5392611717fb665e7c0af46c0e3217">_ry_base</a> + <a class="code" href="../../de/d6f/class_graphics3_d.html#ae6f43e997bd50470a6661bf463573576">_pixel_to_rad</a> * (<span class="keyword">event</span>-&gt;pos().y() - <a class="code" href="../../de/d6f/class_graphics3_d.html#a409518e1b8146001fbaddaaac4d8f80a">_orbiting_y_start</a>);</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;}</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a4074875fcc8c6b773aeb168f1ed5a003">  224</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a4074875fcc8c6b773aeb168f1ed5a003">Graphics3D::mouseReleaseEvent</a>(QMouseEvent *event) {</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa29eb71732ed62ad434b89c82a5d7bd1">_orbiting</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a77d7e3d1b4610344616dcdd00e12102d">_rx_base</a> = <a class="code" href="../../de/d6f/class_graphics3_d.html#a77d7e3d1b4610344616dcdd00e12102d">_rx_base</a> + <a class="code" href="../../de/d6f/class_graphics3_d.html#ae6f43e997bd50470a6661bf463573576">_pixel_to_rad</a> * (<span class="keyword">event</span>-&gt;pos().x() - <a class="code" href="../../de/d6f/class_graphics3_d.html#a4f50df66f2955365d1e85d450a8fe5b1">_orbiting_x_start</a>);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aab5392611717fb665e7c0af46c0e3217">_ry_base</a> = _ry_base + <a class="code" href="../../de/d6f/class_graphics3_d.html#ae6f43e997bd50470a6661bf463573576">_pixel_to_rad</a> * (<span class="keyword">event</span>-&gt;pos().y() - <a class="code" href="../../de/d6f/class_graphics3_d.html#a409518e1b8146001fbaddaaac4d8f80a">_orbiting_y_start</a>);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;}</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a1f8b47f59c3960c71773faad932eac2e">  230</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a1f8b47f59c3960c71773faad932eac2e">Graphics3D::wheelEvent</a>(QWheelEvent *e) {</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;  <span class="keywordflow">if</span> (e-&gt;angleDelta().y() &gt; 0) {</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a> &gt; .1) <a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a> = 0.8f * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a>;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a> &lt; 100) <a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a> = 1.2f * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">_zoom</a>;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  }</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;}</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a26383918275b9fc418c381277b8fdb76">  238</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a26383918275b9fc418c381277b8fdb76">Graphics3D::keyPressEvent</a>(QKeyEvent *e) {</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Control) {</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> *= .5f;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Shift) {</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> *= 2.f;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;  }</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_W)</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[2] = <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a>;</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_S)</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[2] = -<a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a>;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_A)</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[0] = <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a>;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_D)</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[0] = -<a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a>;</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_R)</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[1] = -<a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a>;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_F)</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[1] = <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a>;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Up)</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[0] = <span class="keyword">true</span>;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Down)</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[1] = <span class="keyword">true</span>;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Right)</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[2] = <span class="keyword">true</span>;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Left)</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[3] = <span class="keyword">true</span>;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_V) {</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#a3f50b915849e74cec3bfb5c4829e039e">_pause</a>)</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#a3f50b915849e74cec3bfb5c4829e039e">_pause</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#a3f50b915849e74cec3bfb5c4829e039e">_pause</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;  }</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;  <span class="keywordflow">if</span>(e-&gt;key() == Qt::Key_T) {</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a5d2e953e84b0d4aa0a14bbbb2ead312f">_turbo</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  }</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Tab) {</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[0] = 0.f;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[1] = 0.f;</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">_freeCamPos</a>[2] = 0.f;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">_rx</a> = 0.f;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">_ry</a> = 0.f;</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  }</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;}</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a332464bd12e3e573b57f88ecab13336e">  289</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a332464bd12e3e573b57f88ecab13336e">Graphics3D::keyReleaseEvent</a>(QKeyEvent *e) {</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Control) {</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> /= .5f;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Shift) {</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">_targetSpeed</a> /= 2.f;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Space) {</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#ac58b856e44f7c0a124ccecc0021525e1">_rotOrig</a> = !<a class="code" href="../../de/d6f/class_graphics3_d.html#ac58b856e44f7c0a124ccecc0021525e1">_rotOrig</a>;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;  }</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_W)</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[2] = 0;</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_S)</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[2] = 0;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_A)</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[0] = 0;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_D)</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[0] = 0;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_R)</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[1] = 0;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_F)</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">_freeCamMove</a>[1] = 0;</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Up)</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[0] = <span class="keyword">false</span>;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Down)</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[1] = <span class="keyword">false</span>;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;  <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Right)</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[2] = <span class="keyword">false</span>;</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (e-&gt;key() == Qt::Key_Left)</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">_arrowsPressed</a>[3] = <span class="keyword">false</span>;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;  <span class="keywordflow">if</span>(e-&gt;key() == Qt::Key_T) {</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a5d2e953e84b0d4aa0a14bbbb2ead312f">_turbo</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;  }</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;}</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a322467ce2efdc212fe61c0cd782aa8f2">  331</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a322467ce2efdc212fe61c0cd782aa8f2">Graphics3D::setAnimating</a>(<span class="keywordtype">bool</span> animating) { <a class="code" href="../../de/d6f/class_graphics3_d.html#a53f0426286da70da7dbca33759a7e90b">_animating</a> = animating; }</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#aa20adf046eb31a3703c1bed527e3f657">  333</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#aa20adf046eb31a3703c1bed527e3f657">Graphics3D::renderDrawlist</a>() {</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <span class="comment">// reload if needed</span></div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a55249ea44dfcabccd883215d9132a11c">needsReload</a>()) {</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="comment">// upload data</span></div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;    glDisableVertexAttribArray(2);</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;    glDisableVertexAttribArray(1);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;    glDisableVertexAttribArray(0);</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;    glGenBuffers(3, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[0]);</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    glBufferData(GL_ARRAY_BUFFER, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>) * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a0c41b0aa912c97b04b58c6fcedcb34a0">getSizeOfAllData</a>(),</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                 <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd07faa05bc696fb43bd0fdb9467dfe5">getVertexArray</a>(), GL_STATIC_DRAW);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#a20485c7a1ff5956dd899e90527324b18">_posAttrColorArray</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[1]);</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    glBufferData(GL_ARRAY_BUFFER, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>) * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a0c41b0aa912c97b04b58c6fcedcb34a0">getSizeOfAllData</a>(),</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                 <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#aaee2e45bbb2e8a546feafbedf967d034">getColorArray</a>(), GL_STATIC_DRAW);</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#aedadc120fa1496885078212dc7ac28e4">_colAttrColorArray</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[2]);</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    glBufferData(GL_ARRAY_BUFFER, <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>) * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a0c41b0aa912c97b04b58c6fcedcb34a0">getSizeOfAllData</a>(),</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;                 <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#aab9869265b6079694a8dd5c42a17c567">getNormalArray</a>(), GL_STATIC_DRAW);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#ad6c6cfb2c8a3ad45ed4b4a800d2e1405">_normAttrColorArray</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;    glEnableVertexAttribArray(0);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    glEnableVertexAttribArray(1);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    glEnableVertexAttribArray(2);</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    printf(<span class="stringliteral">&quot;[Graphics 3D] Uploaded data (%f MB)\n&quot;</span>,</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;           <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a09d57d9873d31279ece2cedd6a69cde8">getGLDataSizeMB</a>());</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    glBindBuffer(GL_ARRAY_BUFFER, 0);</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;  }</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  <span class="comment">// draw objects with color arrays</span></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;bind();</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[0]);</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#a20485c7a1ff5956dd899e90527324b18">_posAttrColorArray</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[1]);</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;  glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#aedadc120fa1496885078212dc7ac28e4">_colAttrColorArray</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[2]);</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;  glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#ad6c6cfb2c8a3ad45ed4b4a800d2e1405">_normAttrColorArray</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;  glEnableVertexAttribArray(0);</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  glEnableVertexAttribArray(1);</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  glEnableVertexAttribArray(2);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> <span class="keywordtype">id</span> = 0; <span class="keywordtype">id</span> &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ac5b1d94476402e453f2b3446ed846edc">getNumObjectsToDraw</a>(); <span class="keywordtype">id</span>++) {</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ad7d97925f1406d116bbbb31f53c2da88">_instanceColor</a>[<span class="keywordtype">id</span>].useSolidColor) {</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;setUniformValue(</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;          <a class="code" href="../../de/d6f/class_graphics3_d.html#a41a320a73f0a6439e988640a31c9ce5a">_matrixUniformColorArray</a>,</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;          <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a> * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abb4874ec78af884a830aef981e580137">getModelKinematicTransform</a>(<span class="keywordtype">id</span>) *</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;              <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#acaddb6c8d3e5dae59c9c6cf7b0ba1e00">getModelBaseTransform</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;      glDrawArrays(GL_TRIANGLES, <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae20412e460d33e4dded35cb43818ae17">getGLDrawArrayOffset</a>(<span class="keywordtype">id</span>) / 3,</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;                   <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a2c6f1f169cca762878ec1a46e4dbfcba">getGLDrawArraySize</a>(<span class="keywordtype">id</span>) / 3);</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    }</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  }</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  glDisableVertexAttribArray(2);</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;  glDisableVertexAttribArray(1);</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  glDisableVertexAttribArray(0);</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, 0);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">_colorArrayProgram</a>-&gt;release();</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;  <span class="comment">// draw objects without color arrays</span></div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;bind();</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[0]);</div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;  glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#a1208df0fe1f06f574c32661ddd7529ca">_posAttrSolidColor</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[1]);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;  glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#a3ad8867817743b9f588cc472837d5a02">_colAttrSolidColor</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, <a class="code" href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">_buffID</a>[2]);</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;  glVertexAttribPointer(<a class="code" href="../../de/d6f/class_graphics3_d.html#af61d4deba2823af20e7a8ee4ba566936">_normAttrSolidColor</a>, 3, GL_FLOAT, GL_FALSE, 0, 0);</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;  glEnableVertexAttribArray(0);</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;  glEnableVertexAttribArray(1);</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;  glEnableVertexAttribArray(2);</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> <span class="keywordtype">id</span> = 0; <span class="keywordtype">id</span> &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ac5b1d94476402e453f2b3446ed846edc">getNumObjectsToDraw</a>(); <span class="keywordtype">id</span>++) {</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ad7d97925f1406d116bbbb31f53c2da88">_instanceColor</a>[<span class="keywordtype">id</span>].useSolidColor) {</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;setUniformValue(</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;          <a class="code" href="../../de/d6f/class_graphics3_d.html#a6818e4ab43d79ec03536ae17494643a9">_matrixUniformSolidColor</a>,</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;          <a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a> * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abb4874ec78af884a830aef981e580137">getModelKinematicTransform</a>(<span class="keywordtype">id</span>) *</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;              <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#acaddb6c8d3e5dae59c9c6cf7b0ba1e00">getModelBaseTransform</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;      <span class="keyword">auto</span> &amp;col = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ad7d97925f1406d116bbbb31f53c2da88">_instanceColor</a>[id];</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;setUniformValue(</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;          <a class="code" href="../../de/d6f/class_graphics3_d.html#ada4b2bd10cf6fb4f947bc28a9c808a9e">_colUniformSolidColor</a>,</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;          QVector4D(col.rgba[0], col.rgba[1], col.rgba[2], col.rgba[3]));</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;      glDrawArrays(GL_TRIANGLES, <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae20412e460d33e4dded35cb43818ae17">getGLDrawArrayOffset</a>(<span class="keywordtype">id</span>) / 3,</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;                   <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a2c6f1f169cca762878ec1a46e4dbfcba">getGLDrawArraySize</a>(<span class="keywordtype">id</span>) / 3);</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;    }</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;  }</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;  glDisableVertexAttribArray(2);</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;  glDisableVertexAttribArray(1);</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;  glDisableVertexAttribArray(0);</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;  glBindBuffer(GL_ARRAY_BUFFER, 0);</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">_solidColorProgram</a>-&gt;release();</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a4945d4f24b4be0c063ee3448daa87e24">  437</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a4945d4f24b4be0c063ee3448daa87e24">Graphics3D::configOpenGLPass</a>(<span class="keywordtype">int</span> pass) {</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;  <span class="keywordflow">switch</span> (pass) {</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;    <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;      <span class="comment">// clear screen</span></div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;      <span class="comment">// update camera math</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;      glDisable(GL_CULL_FACE);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;      glEnable(GL_BLEND);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;      glEnable(GL_DEPTH_TEST);</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;      glDepthFunc(GL_LESS);</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;      glEnable(GL_CULL_FACE);</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;      glCullFace(GL_FRONT);</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;      glDepthFunc(GL_ALWAYS);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;    <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;      glEnable(GL_CULL_FACE);</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;      glCullFace(GL_FRONT);</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;      glDepthFunc(GL_LEQUAL);</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;    <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;      glEnable(GL_CULL_FACE);</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;      glCullFace(GL_BACK);</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;      glDepthFunc(GL_ALWAYS);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keywordflow">case</span> 4:</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;      glDisable(GL_CULL_FACE);</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      glDepthFunc(GL_LEQUAL);</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;      <span class="keywordflow">break</span>;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;    <span class="keywordflow">default</span>:</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;      assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;  }</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;}</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#ad92efa791431ec78b240c65c30df37e5">  477</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#ad92efa791431ec78b240c65c30df37e5">Graphics3D::paintGL</a>() {</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;  <span class="comment">// update joystick:</span></div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a8288572fb6a239f8e4bbd2a6c1e771dc">_gameController</a>.<a class="code" href="../../d1/d8b/class_game_controller.html#ac4544ca562232ab37d073cd7ce69197f">updateGamepadCommand</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#aa0d5bd0263d0b8d44a759f9621c20a01">_driverCommand</a>);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="../../de/d6f/class_graphics3_d.html#a53f0426286da70da7dbca33759a7e90b">_animating</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="../../de/d6f/class_graphics3_d.html#aa51e89bc51c43f6ea53f7d0878a8b678">_frame</a> % 60 == 0) {</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    qint64 now = QDateTime::currentMSecsSinceEpoch();</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a5d2cbcb27945207c5efe2707d0b6ddfe">_fps</a> = (60.f * 1000.f / (now - <a class="code" href="../../de/d6f/class_graphics3_d.html#a032dd97a8cbef2ae6b496951d4a7d869">last_frame_ms</a>));</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    <span class="comment">// std::cout &lt;&lt; &quot;FPS: &quot; &lt;&lt; _fps &lt;&lt; &quot;\n&quot;;</span></div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a032dd97a8cbef2ae6b496951d4a7d869">last_frame_ms</a> = now;</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;  }</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  QPainter painter2(<span class="keyword">this</span>);</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a5a26d600296dffb268108c84bfbb342f">updateCameraMatrix</a>();</div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;  <span class="keywordtype">int</span> passes[] = {0, 1, 2, 3, 4};</div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> pass : passes) {</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;    <span class="comment">// setup pass:</span></div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    glShadeModel(GL_SMOOTH);</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a4945d4f24b4be0c063ee3448daa87e24">configOpenGLPass</a>(pass);</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    <span class="comment">// do rendering on all passes:</span></div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    glEnable(GL_BLEND);</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#aa20adf046eb31a3703c1bed527e3f657">renderDrawlist</a>();</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a0b626c2d1757985f4dd53bacad38c8e2">_Additional_Drawing</a>(pass);</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a540f27ed54499fb031a045a6292a9922">_BoxObstacleDrawing</a>();</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  }</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a61817c6a3efa40dfb0d85672f3aaebde">_MeshObstacleDrawing</a>();</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;  painter2.setPen(QColor(100, 100, 100, 255));</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  painter2.fillRect(QRect(30, 30, 400, 200), QColor(100, 100, 100, 220));</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  QFont font(<span class="stringliteral">&quot;Monospace&quot;</span>, 20);</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  painter2.setPen(QColor(210, 100, 100));</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;  painter2.setFont(font);</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;  painter2.drawText(QRect(30, 30, 1000, 1000), Qt::AlignLeft,</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;                    QString(<a class="code" href="../../de/d6f/class_graphics3_d.html#a1113a4cce78fa8cf7919afc5dda360d5">infoString</a>));</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;  painter2.end();</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;  ++<a class="code" href="../../de/d6f/class_graphics3_d.html#aa51e89bc51c43f6ea53f7d0878a8b678">_frame</a>;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;}</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a61817c6a3efa40dfb0d85672f3aaebde">  519</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a61817c6a3efa40dfb0d85672f3aaebde">Graphics3D::_MeshObstacleDrawing</a>() {</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;  glLoadMatrixf(<a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.data());</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;  glPushAttrib(GL_LIGHTING_BIT);</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;  glDisable(GL_LIGHTING);</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;  glPushMatrix();</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  glTranslatef(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a9638d3da87f1198fdcb32d2b624f937d">getHeightMapLeftCorner</a>()[0],</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;               <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a9638d3da87f1198fdcb32d2b624f937d">getHeightMapLeftCorner</a>()[1],</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;               <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a9638d3da87f1198fdcb32d2b624f937d">getHeightMapLeftCorner</a>()[2]);</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  <span class="keywordtype">double</span> height_min = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ab7f8da510907ff8c2a00488dba9f1631">getHeightMapMax</a>();</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;  <span class="keywordtype">double</span> height_max = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a669c697866c96ab734e134811f047afc">getHeightMapMin</a>();</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;  <span class="keywordtype">double</span> height_gap = height_max - height_min;</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;  <span class="keywordtype">double</span> scaled_height(0.);</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <span class="keywordtype">float</span> color_r(0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  <span class="keywordtype">float</span> color_g(0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;  <span class="keywordtype">float</span> color_b(0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;  <span class="keywordtype">double</span> grid_size(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a1da39873b6f2f1c605c49678247e23e0">getGridSize</a>());</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  <span class="keywordtype">double</span> height;</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i(0); i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">getHeightMap</a>().rows(); ++i) {</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    glBegin(GL_LINE_STRIP);</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;    glPushAttrib(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j(0); j &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">getHeightMap</a>().cols(); ++j) {</div><div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;      height = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">getHeightMap</a>()(i, j);</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;      scaled_height = (height - height_min) / height_gap;</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#acf18b4f1460f7aaebbe8965651f058e9">getHeightColor</a>(scaled_height, color_r, color_g, color_b);</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;      glColor4f(color_r, color_g, color_b, 1.0<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;      glVertex3d(i * grid_size, j * grid_size, height);</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;    }</div><div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    glPopAttrib();</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;    glDisable(GL_BLEND);</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    glEnd();</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;  }</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j(0); j &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">getHeightMap</a>().cols(); ++j) {</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    glBegin(GL_LINE_STRIP);</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;    glPushAttrib(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i(0); i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">getHeightMap</a>().rows(); ++i) {</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;      height = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">getHeightMap</a>()(i, j);</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;      scaled_height = (height - height_min) / height_gap;</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;      <a class="code" href="../../de/d6f/class_graphics3_d.html#acf18b4f1460f7aaebbe8965651f058e9">getHeightColor</a>(scaled_height, color_r, color_g, color_b);</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;      glColor4f(color_r, color_g, color_b, 1.0<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;      glVertex3d(i * grid_size, j * grid_size, height);</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;    }</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    glPopAttrib();</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    glDisable(GL_BLEND);</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    glEnd();</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;  }</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;  glPopMatrix();</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;  glEnable(GL_LIGHTING);</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;  glPopAttrib();</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;}</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#acf18b4f1460f7aaebbe8965651f058e9">  577</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#acf18b4f1460f7aaebbe8965651f058e9">Graphics3D::getHeightColor</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> &amp;h, <span class="keywordtype">float</span> &amp;r, <span class="keywordtype">float</span> &amp;g, <span class="keywordtype">float</span> &amp;b) {</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;  <span class="comment">// 0 :  0.2422    0.1504    0.6603</span></div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;  <span class="comment">// 1/7:  0.2810    0.3228    0.9579</span></div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;  <span class="comment">// 2/7: 0.1786    0.5289    0.9682</span></div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;  <span class="comment">// 3/7: 0.0689    0.6948    0.8394</span></div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;  <span class="comment">// 4/7: 0.2161    0.7843    0.5923</span></div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;  <span class="comment">// 5/7: 0.6720    0.7793    0.2227</span></div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;  <span class="comment">// 6/7: 0.9970    0.7659    0.2199</span></div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;  <span class="comment">//   1: 0.9769    0.9839    0.0805</span></div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;  <span class="keywordtype">double</span> step(1. / 7.);</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;  <span class="keywordflow">if</span> (h &gt; 6 * step) {</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 6, r, g, b);</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt; 5 * step) {</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 5, r, g, b);</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt; 4 * step) {</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 4, r, g, b);</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt; 3 * step) {</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 3, r, g, b);</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt; 2 * step) {</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 2, r, g, b);</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt; 1 * step) {</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 1, r, g, b);</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">_SetRGBHeight</a>(h, step, 0, r, g, b);</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;  }</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;}</div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">  603</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">Graphics3D::_SetRGBHeight</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> &amp;h, <span class="keyword">const</span> <span class="keywordtype">double</span> &amp;step,</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;                               <span class="keyword">const</span> <span class="keywordtype">int</span> &amp;idx, <span class="keywordtype">float</span> &amp;r, <span class="keywordtype">float</span> &amp;g, <span class="keywordtype">float</span> &amp;b) {</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;  <span class="keywordtype">double</span> grade = (h - idx * step) / step;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;  r = (<a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[idx + 1] - <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[idx]) * grade + <a class="code" href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">_r</a>[idx];</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;  g = (<a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[idx + 1] - <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[idx]) * grade + <a class="code" href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">_g</a>[idx];</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;  b = (<a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[idx + 1] - <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[idx]) * grade + <a class="code" href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">_b</a>[idx];</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;}</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a540f27ed54499fb031a045a6292a9922">  611</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a540f27ed54499fb031a045a6292a9922">Graphics3D::_BoxObstacleDrawing</a>() {</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;  glLoadMatrixf(<a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.data());</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;  glPushAttrib(GL_LIGHTING_BIT);</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  glDisable(GL_LIGHTING);</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;  <span class="keywordtype">size_t</span> nBox = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a394291a36ef4635a0c1ae25462d8ac5b">getBoxInfoList</a>().size();</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i(0); i &lt; nBox; ++i) {</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;    glPushMatrix();</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;    glMultMatrixf(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a394291a36ef4635a0c1ae25462d8ac5b">getBoxInfoList</a>()[i].frame);  <span class="comment">// column major</span></div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a950380fbd120149654025042e5f9316c">_DrawBox</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a394291a36ef4635a0c1ae25462d8ac5b">getBoxInfoList</a>()[i].depth,</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;             <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a394291a36ef4635a0c1ae25462d8ac5b">getBoxInfoList</a>()[i].width,</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;             <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a394291a36ef4635a0c1ae25462d8ac5b">getBoxInfoList</a>()[i].height);</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    glPopMatrix();</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;  }</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;  glEnable(GL_LIGHTING);</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;  glPopAttrib();</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;}</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a950380fbd120149654025042e5f9316c">  629</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a950380fbd120149654025042e5f9316c">Graphics3D::_DrawBox</a>(<span class="keywordtype">double</span> depth, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height) {</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;  <span class="keywordtype">double</span> x = depth / 2.0;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;  <span class="keywordtype">double</span> y = width / 2.0;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;  <span class="keywordtype">double</span> z = height / 2.0;</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;  glPushAttrib(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;  glEnable(GL_BLEND);</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;  glColor4f(<a class="code" href="../../de/d6f/class_graphics3_d.html#a4340882a8b3faed7fa712d00d36f6103">_color1</a>[0], <a class="code" href="../../de/d6f/class_graphics3_d.html#a4340882a8b3faed7fa712d00d36f6103">_color1</a>[1], <a class="code" href="../../de/d6f/class_graphics3_d.html#a4340882a8b3faed7fa712d00d36f6103">_color1</a>[2], 0.7<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;  glBegin(GL_QUADS);</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;  {</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    glVertex3d(x, y, -z);</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    glVertex3d(-x, y, -z);</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    glVertex3d(-x, y, z);</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;    glVertex3d(x, y, z);</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;    glVertex3d(x, -y, -z);</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;    glVertex3d(x, y, -z);</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;    glVertex3d(x, y, z);</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    glVertex3d(x, -y, z);</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;    glVertex3d(x, -y, z);</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;    glVertex3d(-x, -y, z);</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;    glVertex3d(-x, -y, -z);</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;    glVertex3d(x, -y, -z);</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;    glVertex3d(-x, -y, z);</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    glVertex3d(-x, y, z);</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    glVertex3d(-x, y, -z);</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    glVertex3d(-x, -y, -z);</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;    glVertex3d(-x, -y, -z);</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    glVertex3d(-x, y, -z);</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;    glVertex3d(x, y, -z);</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;    glVertex3d(x, -y, -z);</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;    glVertex3d(-x, -y, z);</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    glVertex3d(x, -y, z);</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;    glVertex3d(x, y, z);</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;    glVertex3d(-x, y, z);</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;  }  <span class="comment">// GL_QUADS</span></div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;  glEnd();</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;  glPopAttrib();</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;  glDisable(GL_BLEND);</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;}</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a0b626c2d1757985f4dd53bacad38c8e2">  679</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a0b626c2d1757985f4dd53bacad38c8e2">Graphics3D::_Additional_Drawing</a>(<span class="keywordtype">int</span> pass) {</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;  glLoadMatrixf(<a class="code" href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">_cameraMatrix</a>.data());</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;  glPushAttrib(GL_LIGHTING_BIT);</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;  glDisable(GL_LIGHTING);</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aed2632dbf9e0c7e3d5c0336738957cd8">_DrawContactForce</a>();</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ac45572ef85a87fa4cf2647e418d220d4">_DrawContactPoint</a>();</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a4945d4f24b4be0c063ee3448daa87e24">configOpenGLPass</a>(pass);</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;  glEnable(GL_BLEND);</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#a1b8df7759f0915a5e03d6c21842bb1ef">num_arrows</a>; i++) {</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">_drawArrow</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#ac3804bfd5d4bcabb7c8bb071af926392">arrows</a>[i]);</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;  }</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#acdaa9a9b2dc6eb56c1ed59eaf8cbace6">num_cones</a>; i++) {</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#a5486700fa1514220acfd22461ecb37d9">_drawCone</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#a3ad962607df43b9c3341fd66fccf7965">cones</a>[i]);</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;  }</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#a6a7fc3d189663c122f46f8249d0a905d">num_blocks</a>; i++) {</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#accfe6975a634047d2396cfad9b17b5d2">_drawBlock</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#acafc627b43500644d9cb912826845022">blocks</a>[i]);</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;  }</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#aa605c5959b96d1ec42a61ee126cfd7bb">num_spheres</a>; i++) {</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#af4a38ac4c3cb98d9720acd07dd1ff38a">_drawSphere</a>(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#a308504b90f9041bf4f0401f1642f7d1c">spheres</a>[i]);</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;  }</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;  glDisable(GL_BLEND);</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#a41efc7d1cf72a420f12faaf4b35d5302">num_paths</a>; i++) {</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;    <a class="code" href="../../d1/d06/struct_path_visualization.html">PathVisualization</a> path = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">_visualizationData</a>-&gt;<a class="code" href="../../d3/d60/struct_visualization_data.html#ae2682101eb8ddbe0e7e0fc064cdc3747">paths</a>[i];</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;    glColor4f(path.<a class="code" href="../../d1/d06/struct_path_visualization.html#a9bfc2fdcd8c81c4adaabfae7939d6025">color</a>[0], path.<a class="code" href="../../d1/d06/struct_path_visualization.html#a9bfc2fdcd8c81c4adaabfae7939d6025">color</a>[1], path.<a class="code" href="../../d1/d06/struct_path_visualization.html#a9bfc2fdcd8c81c4adaabfae7939d6025">color</a>[2], path.<a class="code" href="../../d1/d06/struct_path_visualization.html#a9bfc2fdcd8c81c4adaabfae7939d6025">color</a>[3]);</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;    glBegin(GL_LINE_STRIP);</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; path.<a class="code" href="../../d1/d06/struct_path_visualization.html#a47542e6568029a8d49c182e192b6d942">num_points</a>; j++) {</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;      glVertex3d(path.<a class="code" href="../../d1/d06/struct_path_visualization.html#aa42936e8c4d6308aafba7af06b34df74">position</a>[j][0], path.<a class="code" href="../../d1/d06/struct_path_visualization.html#aa42936e8c4d6308aafba7af06b34df74">position</a>[j][1], path.<a class="code" href="../../d1/d06/struct_path_visualization.html#aa42936e8c4d6308aafba7af06b34df74">position</a>[j][2]);</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;    }</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;    glEnd();</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;  }</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  glPopAttrib();</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;  glEnable(GL_LIGHTING);</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;}</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#aed2632dbf9e0c7e3d5c0336738957cd8">  722</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#aed2632dbf9e0c7e3d5c0336738957cd8">Graphics3D::_DrawContactForce</a>() {</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;  glLineWidth(2.0);</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;  <span class="comment">// double scale(0.02);</span></div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;  <span class="keywordtype">double</span> scale(0.0025);</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;  glPushAttrib(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;  glEnable(GL_BLEND);</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i(0); i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a1e061a3a3e49ebfa5cda903410138397">getTotalNumGC</a>(); ++i) {</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;    glColor4f(0.8<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.0<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.5<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;    <a class="code" href="../../d9/d8e/cpp_types_8h.html#a6f07728c866b15ff0676a9b2ebfd2ba6">Vec3&lt;float&gt;</a> floatForce, floatPos;</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; 3; j++) {</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;      floatPos(j) = <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae4b99509d0985cf5302c0ce09e6eb715">getGCPos</a>(i)[j];</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;      floatForce(j) = scale * <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a0c2c941704b8e8099f5dc4fb7f2d13f9">getGCForce</a>(i)[j];</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;    }</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;    <a class="code" href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">_drawArrow</a>(floatPos, floatForce, .005, .015, .04);</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;  }</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;  glPopAttrib();</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;  glDisable(GL_BLEND);</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;}</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#ac45572ef85a87fa4cf2647e418d220d4">  744</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#ac45572ef85a87fa4cf2647e418d220d4">Graphics3D::_DrawContactPoint</a>() {</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;  glPointSize(5);</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;  glPushAttrib(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;  glEnable(GL_BLEND);</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i(0); i &lt; <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#a1e061a3a3e49ebfa5cda903410138397">getTotalNumGC</a>(); ++i) {</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    glBegin(GL_POINTS);</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;    glColor4f(0.8<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.0<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.1<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, 0.3<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>);</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;    glVertex3f(<a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae4b99509d0985cf5302c0ce09e6eb715">getGCPos</a>(i)[0], <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae4b99509d0985cf5302c0ce09e6eb715">getGCPos</a>(i)[1],</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;               <a class="code" href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">_drawList</a>.<a class="code" href="../../d1/d03/class_draw_list.html#ae4b99509d0985cf5302c0ce09e6eb715">getGCPos</a>(i)[2]);</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;    glEnd();</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;  }</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;  glPopAttrib();</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;  glDisable(GL_BLEND);</div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;}</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#af320ca8b65460c371d0b76e605a03d07">  764</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#af320ca8b65460c371d0b76e605a03d07">Graphics3D::_rotateZtoDirection</a>(<span class="keyword">const</span> <a class="code" href="../../d9/d8e/cpp_types_8h.html#a6f07728c866b15ff0676a9b2ebfd2ba6">Vec3&lt;float&gt;</a> &amp;direction) {</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;  <span class="keywordtype">float</span> len = direction.norm();</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;  <span class="keywordtype">float</span> dxn = direction(0) / len;</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;  <span class="keywordtype">float</span> dyn = direction(1) / len;</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;  <span class="keywordtype">float</span> dzn = direction(2) / len;</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;  <span class="comment">// Note: We need to create a rotation such that the z-axis points in the</span></div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;  <span class="comment">// direction of the &#39;direction&#39; argument</span></div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;  <span class="comment">//       Thus, we can realize the rotation with a pure x-y axial rotation</span></div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;  <span class="comment">//       The rotation matrix of the rotated frame &#39;r&#39; to the current frame &#39;c&#39;</span></div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;  <span class="comment">//       (c_R_r) has special form. It&#39;s 3-rd column in particular has form: [</span></div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;  <span class="comment">//       wy*sin(theta) -wx*sin(theta) (1- cos(theta))]&#39; where theta , [wx wy</span></div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;  <span class="comment">//       0] is the angle, axis of rotation</span></div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;  <span class="comment">// Find the rotation angle by comparing the z-axis of the current and rotated</span></div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;  <span class="comment">// frame</span></div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">double</span> cosTheta = dzn;</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">double</span> theta = acos(cosTheta);</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">double</span> sinTheta = sin(theta);</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;  <span class="comment">// Exploit the special form of the rotation matrix (explained above) for find</span></div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;  <span class="comment">// the axis of rotation</span></div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;  <span class="keywordtype">float</span> rX, rY, rZ;</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;  <span class="keywordflow">if</span> (theta &gt; 0) {</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;    rX = -dyn / sinTheta;</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;    rY = dxn / sinTheta;</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;    rZ = 0;</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;    rX = 0;</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    rY = 0;</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;    rZ = 1;</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;  }</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;  glRotatef(<a class="code" href="../../da/d9b/namespaceori.html#ab66b0f13a5bbe6887c815cc1f97b6a13">ori::rad2deg</a>(theta), rX, rY, rZ);</div><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;}</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;</div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#af4a38ac4c3cb98d9720acd07dd1ff38a">  799</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#af4a38ac4c3cb98d9720acd07dd1ff38a">Graphics3D::_drawSphere</a>(<a class="code" href="../../d7/d94/struct_sphere_visualization.html">SphereVisualization</a> &amp;sphere) {</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;  <span class="keyword">static</span> GLUquadric *quad = gluNewQuadric();</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;  glPushMatrix();</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ab827a56c12d8bd1f08c3d24e2b520e99">_translate</a>(sphere.<a class="code" href="../../d7/d94/struct_sphere_visualization.html#aed59e2de0afb354c9884b50cacf1ec01">position</a>);</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa7f5cf1109caec4c347a2b2536f32e64">_setColor</a>(sphere.<a class="code" href="../../d7/d94/struct_sphere_visualization.html#aea69e24257acb3572997bf10ac849aa5">color</a>);</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;  gluSphere(quad, sphere.<a class="code" href="../../d7/d94/struct_sphere_visualization.html#ae15c3cbfe6ba95ebf879911322fc6106">radius</a>, 16, 16);</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;  glPopMatrix();</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;}</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a5486700fa1514220acfd22461ecb37d9">  808</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#a5486700fa1514220acfd22461ecb37d9">Graphics3D::_drawCone</a>(<a class="code" href="../../df/da6/struct_cone_visualization.html">ConeVisualization</a> &amp;cone) {</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;  <span class="keyword">static</span> GLUquadric *quad = gluNewQuadric();</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;  <span class="keywordtype">float</span> len = cone.<a class="code" href="../../df/da6/struct_cone_visualization.html#a6eb728c0ea507b5147d45ac8fb821fa4">direction</a>.norm();</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;  glPushMatrix();</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa7f5cf1109caec4c347a2b2536f32e64">_setColor</a>(cone.<a class="code" href="../../df/da6/struct_cone_visualization.html#ac7cbde74fb410d14c1ee05fba6919149">color</a>);</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ab827a56c12d8bd1f08c3d24e2b520e99">_translate</a>(cone.<a class="code" href="../../df/da6/struct_cone_visualization.html#a113f84cce5d8f273d247517f22cd2dca">point_position</a>);</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#af320ca8b65460c371d0b76e605a03d07">_rotateZtoDirection</a>(cone.<a class="code" href="../../df/da6/struct_cone_visualization.html#a6eb728c0ea507b5147d45ac8fb821fa4">direction</a>);</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">int</span> detail = 32;</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;  gluCylinder(quad, 0, cone.<a class="code" href="../../df/da6/struct_cone_visualization.html#acd89586de3ff5b357d8b4ff351623170">radius</a>, len, detail, 1);</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;  glPopMatrix();</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;}</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#accfe6975a634047d2396cfad9b17b5d2">  821</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#accfe6975a634047d2396cfad9b17b5d2">Graphics3D::_drawBlock</a>(<a class="code" href="../../d5/d38/struct_block_visualization.html">BlockVisualization</a> &amp;box) {</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;  glPushMatrix();</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ab827a56c12d8bd1f08c3d24e2b520e99">_translate</a>(box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a36f8d0393f0e30ae00a6ef8172cf5d4b">corner_position</a>);</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa7f5cf1109caec4c347a2b2536f32e64">_setColor</a>(box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a53d11cfe2073612d72b2bf135e810549">color</a>);</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;  glRotatef(box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a1efc623209961dbda3ffacb8394043f9">rpy</a>(2), 0, 0, 1);</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;  glRotatef(box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a1efc623209961dbda3ffacb8394043f9">rpy</a>(1), 0, 1, 0);</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;  glRotatef(box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a1efc623209961dbda3ffacb8394043f9">rpy</a>(0), 1, 0, 0);</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;  glScalef(box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a26fc4f3ea8bc078585cf0ffad9c40ddb">dimension</a>(0), box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a26fc4f3ea8bc078585cf0ffad9c40ddb">dimension</a>(1), box.<a class="code" href="../../d5/d38/struct_block_visualization.html#a26fc4f3ea8bc078585cf0ffad9c40ddb">dimension</a>(2));</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;  glTranslatef(.5, .5, .5);</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#a950380fbd120149654025042e5f9316c">_DrawBox</a>(1, 1, 1);</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;  glPopMatrix();</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;}</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">  835</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">Graphics3D::_drawArrow</a>(<a class="code" href="../../d4/d7b/struct_arrow_visualization.html">ArrowVisualization</a> &amp;arrow) {</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#aa7f5cf1109caec4c347a2b2536f32e64">_setColor</a>(arrow.<a class="code" href="../../d4/d7b/struct_arrow_visualization.html#a6a693a511a4598a5f1342d660d94058f">color</a>);</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">_drawArrow</a>(arrow.<a class="code" href="../../d4/d7b/struct_arrow_visualization.html#acc67bc1e7c7b68a0dd34e274d3fba74d">base_position</a>, arrow.<a class="code" href="../../d4/d7b/struct_arrow_visualization.html#adb09f8cc38aefd6032b4cddd49b55303">direction</a>, arrow.<a class="code" href="../../d4/d7b/struct_arrow_visualization.html#aac169a55027330b9a39e1d831252db4d">shaft_width</a>,</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;             arrow.<a class="code" href="../../d4/d7b/struct_arrow_visualization.html#a8398c9cd961da4ed3a90da46ec073a58">head_width</a>, arrow.<a class="code" href="../../d4/d7b/struct_arrow_visualization.html#ae555905f140ddf3b76d5b73decbd95f4">head_length</a>);</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;}</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;</div><div class="line"><a name="l00841"></a><span class="lineno"><a class="line" href="../../de/d6f/class_graphics3_d.html#a7ee9862c8f631e256f5b17c1af5313d6">  841</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">Graphics3D::_drawArrow</a>(<span class="keyword">const</span> <a class="code" href="../../d9/d8e/cpp_types_8h.html#a6f07728c866b15ff0676a9b2ebfd2ba6">Vec3&lt;float&gt;</a> &amp;position,</div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                            <span class="keyword">const</span> <a class="code" href="../../d9/d8e/cpp_types_8h.html#a6f07728c866b15ff0676a9b2ebfd2ba6">Vec3&lt;float&gt;</a> &amp;direction, <span class="keywordtype">float</span> lineWidth,</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;                            <span class="keywordtype">float</span> headWidth, <span class="keywordtype">float</span> headLength) {</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;  <span class="keywordtype">double</span> len = direction.norm();</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;  glPushMatrix();</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#ab827a56c12d8bd1f08c3d24e2b520e99">_translate</a>(position);</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;  <a class="code" href="../../de/d6f/class_graphics3_d.html#af320ca8b65460c371d0b76e605a03d07">_rotateZtoDirection</a>(direction);</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;  <span class="keywordtype">double</span> cylinderLength = len;</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;  <span class="keywordflow">if</span> (cylinderLength &gt; headLength) {</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;    cylinderLength -= headLength;</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;    headLength = cylinderLength;</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;    cylinderLength = 0;</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;  }</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;  <span class="keyword">const</span> <span class="keywordtype">int</span> detail = 32;</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;  <span class="keyword">static</span> GLUquadric *quad = gluNewQuadric();</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;  <span class="comment">// glPolygonMode(GL_FRONT, GL_FILL);</span></div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;  <span class="comment">// Draw Cylinder</span></div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;  gluCylinder(quad, lineWidth, lineWidth, cylinderLength, detail, 1);</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;  <span class="comment">// Draw Cylinder Base</span></div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;  glRotated(180, 1, 0, 0);</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;  gluDisk(quad, 0, lineWidth, detail, detail);</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;  glRotated(180, 1, 0, 0);</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;  glTranslatef(0, 0, cylinderLength);</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;  <span class="comment">// Draw Arrowhead</span></div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;  gluCylinder(quad, headWidth, 0.0<a class="code" href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a>, headLength, detail, detail);</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;  glRotated(180, 1, 0, 0);</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;  <span class="comment">// Draw Arrowhead Base</span></div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;  gluDisk(quad, lineWidth, headWidth, detail, detail);</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;  glPopMatrix();</div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;}</div><div class="ttc" id="struct_path_visualization_html_a47542e6568029a8d49c182e192b6d942"><div class="ttname"><a href="../../d1/d06/struct_path_visualization.html#a47542e6568029a8d49c182e192b6d942">PathVisualization::num_points</a></div><div class="ttdeci">size_t num_points</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00045">VisualizationData.h:45</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a26383918275b9fc418c381277b8fdb76"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a26383918275b9fc418c381277b8fdb76">Graphics3D::keyPressEvent</a></div><div class="ttdeci">void keyPressEvent(QKeyEvent *event) override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00238">Graphics3D.cpp:238</a></div></div>
<div class="ttc" id="_graphics3_d_8cpp_html_acfa44c88e7b6f3235e4b69bfe02936b8"><div class="ttname"><a href="../../d7/d90/_graphics3_d_8cpp.html#acfa44c88e7b6f3235e4b69bfe02936b8">fragmentShaderSource</a></div><div class="ttdeci">static constexpr char fragmentShaderSource[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00057">Graphics3D.cpp:57</a></div></div>
<div class="ttc" id="struct_visualization_data_html_ac3804bfd5d4bcabb7c8bb071af926392"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#ac3804bfd5d4bcabb7c8bb071af926392">VisualizationData::arrows</a></div><div class="ttdeci">ArrowVisualization arrows[VISUALIZATION_MAX_ITEMS]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00065">VisualizationData.h:65</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a63ca25b61186ff59bd624b7f1f527e3b"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a63ca25b61186ff59bd624b7f1f527e3b">Graphics3D::initializeGL</a></div><div class="ttdeci">void initializeGL() override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00167">Graphics3D.cpp:167</a></div></div>
<div class="ttc" id="class_draw_list_html_a1b2d94c539ac6c6e1f4ec3fb859888c9"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a1b2d94c539ac6c6e1f4ec3fb859888c9">DrawList::addCheetah3</a></div><div class="ttdeci">size_t addCheetah3(Vec4&lt; float &gt; color, bool useOld)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d8b/_draw_list_8cpp_source.html#l00048">DrawList.cpp:48</a></div></div>
<div class="ttc" id="class_draw_list_html_abd0bda993bf3d65a019abe27efbad85e"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#abd0bda993bf3d65a019abe27efbad85e">DrawList::_visualizationData</a></div><div class="ttdeci">VisualizationData * _visualizationData</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00051">DrawList.h:51</a></div></div>
<div class="ttc" id="namespaceori_html_ab66b0f13a5bbe6887c815cc1f97b6a13"><div class="ttname"><a href="../../da/d9b/namespaceori.html#ab66b0f13a5bbe6887c815cc1f97b6a13">ori::rad2deg</a></div><div class="ttdeci">T rad2deg(T rad)</div><div class="ttdef"><b>Definition:</b> <a href="../../d4/dfb/orientation__tools_8h_source.html#l00038">orientation_tools.h:38</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ac45572ef85a87fa4cf2647e418d220d4"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ac45572ef85a87fa4cf2647e418d220d4">Graphics3D::_DrawContactPoint</a></div><div class="ttdeci">void _DrawContactPoint()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00744">Graphics3D.cpp:744</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aab5392611717fb665e7c0af46c0e3217"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aab5392611717fb665e7c0af46c0e3217">Graphics3D::_ry_base</a></div><div class="ttdeci">float _ry_base</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00136">Graphics3D.h:136</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a77ec4a4e2f7033ee67db79b84bdd7867"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a77ec4a4e2f7033ee67db79b84bdd7867">Graphics3D::_freeCamFilter</a></div><div class="ttdeci">FirstOrderIIRFilter&lt; Vec3&lt; float &gt;, float &gt; _freeCamFilter</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00148">Graphics3D.h:148</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a3ad7844f71270479d0b59f80b7809cbd"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a3ad7844f71270479d0b59f80b7809cbd">Graphics3D::_arrowsPressed</a></div><div class="ttdeci">bool _arrowsPressed[4]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00154">Graphics3D.h:154</a></div></div>
<div class="ttc" id="class_first_order_i_i_r_filter_html_a6b1e22e84349dfe5b4c166a9d46c5d4b"><div class="ttname"><a href="../../dc/d6f/class_first_order_i_i_r_filter.html#a6b1e22e84349dfe5b4c166a9d46c5d4b">FirstOrderIIRFilter::update</a></div><div class="ttdeci">T update(T &amp;x)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d73/_first_order_i_i_r_filter_8h_source.html#l00044">FirstOrderIIRFilter.h:44</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a4f50df66f2955365d1e85d450a8fe5b1"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a4f50df66f2955365d1e85d450a8fe5b1">Graphics3D::_orbiting_x_start</a></div><div class="ttdeci">int _orbiting_x_start</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00133">Graphics3D.h:133</a></div></div>
<div class="ttc" id="class_graphics3_d_html_acf18b4f1460f7aaebbe8965651f058e9"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#acf18b4f1460f7aaebbe8965651f058e9">Graphics3D::getHeightColor</a></div><div class="ttdeci">void getHeightColor(const double &amp;height, float &amp;r, float &amp;g, float &amp;b)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00577">Graphics3D.cpp:577</a></div></div>
<div class="ttc" id="struct_block_visualization_html_a1efc623209961dbda3ffacb8394043f9"><div class="ttname"><a href="../../d5/d38/struct_block_visualization.html#a1efc623209961dbda3ffacb8394043f9">BlockVisualization::rpy</a></div><div class="ttdeci">Vec3&lt; float &gt; rpy</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00024">VisualizationData.h:24</a></div></div>
<div class="ttc" id="class_draw_list_html_a09d57d9873d31279ece2cedd6a69cde8"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a09d57d9873d31279ece2cedd6a69cde8">DrawList::getGLDataSizeMB</a></div><div class="ttdeci">float getGLDataSizeMB()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00142">DrawList.h:142</a></div></div>
<div class="ttc" id="utilities_8h_html"><div class="ttname"><a href="../../de/df0/utilities_8h.html">utilities.h</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html">ArrowVisualization</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00028">VisualizationData.h:28</a></div></div>
<div class="ttc" id="struct_cone_visualization_html_a113f84cce5d8f273d247517f22cd2dca"><div class="ttname"><a href="../../df/da6/struct_cone_visualization.html#a113f84cce5d8f273d247517f22cd2dca">ConeVisualization::point_position</a></div><div class="ttdeci">Vec3&lt; float &gt; point_position</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00054">VisualizationData.h:54</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a43ab8da89d78bbfb4cf9185dffe8f949"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a43ab8da89d78bbfb4cf9185dffe8f949">Graphics3D::_g</a></div><div class="ttdeci">float _g[8]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00159">Graphics3D.h:159</a></div></div>
<div class="ttc" id="struct_cone_visualization_html_ac7cbde74fb410d14c1ee05fba6919149"><div class="ttname"><a href="../../df/da6/struct_cone_visualization.html#ac7cbde74fb410d14c1ee05fba6919149">ConeVisualization::color</a></div><div class="ttdeci">Vec4&lt; float &gt; color</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00056">VisualizationData.h:56</a></div></div>
<div class="ttc" id="class_game_controller_html_ac4544ca562232ab37d073cd7ce69197f"><div class="ttname"><a href="../../d1/d8b/class_game_controller.html#ac4544ca562232ab37d073cd7ce69197f">GameController::updateGamepadCommand</a></div><div class="ttdeci">void updateGamepadCommand(GamepadCommand &amp;gamepadCommand)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de9/_game_controller_8cpp_source.html#l00059">GameController.cpp:59</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a332464bd12e3e573b57f88ecab13336e"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a332464bd12e3e573b57f88ecab13336e">Graphics3D::keyReleaseEvent</a></div><div class="ttdeci">void keyReleaseEvent(QKeyEvent *e) override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00289">Graphics3D.cpp:289</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa20adf046eb31a3703c1bed527e3f657"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa20adf046eb31a3703c1bed527e3f657">Graphics3D::renderDrawlist</a></div><div class="ttdeci">void renderDrawlist()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00333">Graphics3D.cpp:333</a></div></div>
<div class="ttc" id="class_draw_list_html_aab9869265b6079694a8dd5c42a17c567"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#aab9869265b6079694a8dd5c42a17c567">DrawList::getNormalArray</a></div><div class="ttdeci">float * getNormalArray()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00114">DrawList.h:114</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa51e89bc51c43f6ea53f7d0878a8b678"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa51e89bc51c43f6ea53f7d0878a8b678">Graphics3D::_frame</a></div><div class="ttdeci">int _frame</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00127">Graphics3D.h:127</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a49c53912e2868ee7d93cb0a3ed6d0f4b"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a49c53912e2868ee7d93cb0a3ed6d0f4b">Graphics3D::setupMiniCheetah</a></div><div class="ttdeci">size_t setupMiniCheetah(Vec4&lt; float &gt; color, bool useOld)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00122">Graphics3D.cpp:122</a></div></div>
<div class="ttc" id="_graphics3_d_8cpp_html_a5cbca7ba539de3dddd8a9621c3edcc8d"><div class="ttname"><a href="../../d7/d90/_graphics3_d_8cpp.html#a5cbca7ba539de3dddd8a9621c3edcc8d">vertexShaderSourceSolidColor</a></div><div class="ttdeci">static constexpr char vertexShaderSourceSolidColor[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00038">Graphics3D.cpp:38</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a8288572fb6a239f8e4bbd2a6c1e771dc"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a8288572fb6a239f8e4bbd2a6c1e771dc">Graphics3D::_gameController</a></div><div class="ttdeci">GameController _gameController</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00080">Graphics3D.h:80</a></div></div>
<div class="ttc" id="struct_block_visualization_html_a53d11cfe2073612d72b2bf135e810549"><div class="ttname"><a href="../../d5/d38/struct_block_visualization.html#a53d11cfe2073612d72b2bf135e810549">BlockVisualization::color</a></div><div class="ttdeci">Vec4&lt; float &gt; color</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00025">VisualizationData.h:25</a></div></div>
<div class="ttc" id="struct_block_visualization_html_a36f8d0393f0e30ae00a6ef8172cf5d4b"><div class="ttname"><a href="../../d5/d38/struct_block_visualization.html#a36f8d0393f0e30ae00a6ef8172cf5d4b">BlockVisualization::corner_position</a></div><div class="ttdeci">Vec3&lt; float &gt; corner_position</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00023">VisualizationData.h:23</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html_a6a693a511a4598a5f1342d660d94058f"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html#a6a693a511a4598a5f1342d660d94058f">ArrowVisualization::color</a></div><div class="ttdeci">Vec4&lt; float &gt; color</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00031">VisualizationData.h:31</a></div></div>
<div class="ttc" id="class_draw_list_html_a89c4a0327553343171fe6d948679f78c"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a89c4a0327553343171fe6d948679f78c">DrawList::addMiniCheetah</a></div><div class="ttdeci">size_t addMiniCheetah(Vec4&lt; float &gt; color, bool useOld)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d8b/_draw_list_8cpp_source.html#l00129">DrawList.cpp:129</a></div></div>
<div class="ttc" id="struct_visualization_data_html_a308504b90f9041bf4f0401f1642f7d1c"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#a308504b90f9041bf4f0401f1642f7d1c">VisualizationData::spheres</a></div><div class="ttdeci">SphereVisualization spheres[VISUALIZATION_MAX_ITEMS]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00063">VisualizationData.h:63</a></div></div>
<div class="ttc" id="cpp_types_8h_html_a6f07728c866b15ff0676a9b2ebfd2ba6"><div class="ttname"><a href="../../d9/d8e/cpp_types_8h.html#a6f07728c866b15ff0676a9b2ebfd2ba6">Vec3</a></div><div class="ttdeci">typename Eigen::Matrix&lt; T, 3, 1 &gt; Vec3</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/d8e/cpp_types_8h_source.html#l00026">cppTypes.h:26</a></div></div>
<div class="ttc" id="class_draw_list_html_acdf51fca776b0e13bdbb756e40741442"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#acdf51fca776b0e13bdbb756e40741442">DrawList::getCameraOrigin</a></div><div class="ttdeci">const Vec3&lt; double &gt; &amp; getCameraOrigin()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00277">DrawList.h:277</a></div></div>
<div class="ttc" id="struct_visualization_data_html_a3ad962607df43b9c3341fd66fccf7965"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#a3ad962607df43b9c3341fd66fccf7965">VisualizationData::cones</a></div><div class="ttdeci">ConeVisualization cones[VISUALIZATION_MAX_ITEMS]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00066">VisualizationData.h:66</a></div></div>
<div class="ttc" id="class_graphics3_d_html_accfe6975a634047d2396cfad9b17b5d2"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#accfe6975a634047d2396cfad9b17b5d2">Graphics3D::_drawBlock</a></div><div class="ttdeci">void _drawBlock(BlockVisualization &amp;box)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00821">Graphics3D.cpp:821</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ada4b2bd10cf6fb4f947bc28a9c808a9e"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ada4b2bd10cf6fb4f947bc28a9c808a9e">Graphics3D::_colUniformSolidColor</a></div><div class="ttdeci">GLuint _colUniformSolidColor</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00115">Graphics3D.h:115</a></div></div>
<div class="ttc" id="class_graphics3_d_html_abdd70a8fa862aec71ef91e79205c8035"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#abdd70a8fa862aec71ef91e79205c8035">Graphics3D::~Graphics3D</a></div><div class="ttdeci">virtual ~Graphics3D()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00112">Graphics3D.cpp:112</a></div></div>
<div class="ttc" id="struct_path_visualization_html_a9bfc2fdcd8c81c4adaabfae7939d6025"><div class="ttname"><a href="../../d1/d06/struct_path_visualization.html#a9bfc2fdcd8c81c4adaabfae7939d6025">PathVisualization::color</a></div><div class="ttdeci">Vec4&lt; float &gt; color</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00046">VisualizationData.h:46</a></div></div>
<div class="ttc" id="struct_visualization_data_html_acdaa9a9b2dc6eb56c1ed59eaf8cbace6"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#acdaa9a9b2dc6eb56c1ed59eaf8cbace6">VisualizationData::num_cones</a></div><div class="ttdeci">size_t num_cones</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00061">VisualizationData.h:61</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a5d2e953e84b0d4aa0a14bbbb2ead312f"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a5d2e953e84b0d4aa0a14bbbb2ead312f">Graphics3D::_turbo</a></div><div class="ttdeci">bool _turbo</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00143">Graphics3D.h:143</a></div></div>
<div class="ttc" id="struct_visualization_data_html_aa605c5959b96d1ec42a61ee126cfd7bb"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#aa605c5959b96d1ec42a61ee126cfd7bb">VisualizationData::num_spheres</a></div><div class="ttdeci">size_t num_spheres</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00061">VisualizationData.h:61</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a889ebf1228953a94901caef609625830"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a889ebf1228953a94901caef609625830">Graphics3D::_solidColorProgram</a></div><div class="ttdeci">QOpenGLShaderProgram * _solidColorProgram</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00124">Graphics3D.h:124</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ad6c6cfb2c8a3ad45ed4b4a800d2e1405"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ad6c6cfb2c8a3ad45ed4b4a800d2e1405">Graphics3D::_normAttrColorArray</a></div><div class="ttdeci">GLuint _normAttrColorArray</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00112">Graphics3D.h:112</a></div></div>
<div class="ttc" id="struct_cone_visualization_html_a6eb728c0ea507b5147d45ac8fb821fa4"><div class="ttname"><a href="../../df/da6/struct_cone_visualization.html#a6eb728c0ea507b5147d45ac8fb821fa4">ConeVisualization::direction</a></div><div class="ttdeci">Vec3&lt; float &gt; direction</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00055">VisualizationData.h:55</a></div></div>
<div class="ttc" id="struct_visualization_data_html_a6a7fc3d189663c122f46f8249d0a905d"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#a6a7fc3d189663c122f46f8249d0a905d">VisualizationData::num_blocks</a></div><div class="ttdeci">size_t num_blocks</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00062">VisualizationData.h:62</a></div></div>
<div class="ttc" id="class_first_order_i_i_r_filter_html_a11abac204c75fb6ef53e830d052dfab1"><div class="ttname"><a href="../../dc/d6f/class_first_order_i_i_r_filter.html#a11abac204c75fb6ef53e830d052dfab1">FirstOrderIIRFilter::get</a></div><div class="ttdeci">T get()</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d73/_first_order_i_i_r_filter_8h_source.html#l00052">FirstOrderIIRFilter.h:52</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a63cb081eee8a551e1182c123d1945ed9"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a63cb081eee8a551e1182c123d1945ed9">Graphics3D::_buffID</a></div><div class="ttdeci">GLuint _buffID[3]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00120">Graphics3D.h:120</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a2ded7e2e203f7d660f4120e0b9e3ed61"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a2ded7e2e203f7d660f4120e0b9e3ed61">Graphics3D::setupCheetah3</a></div><div class="ttdeci">size_t setupCheetah3(Vec4&lt; float &gt; color, bool useOld)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00117">Graphics3D.cpp:117</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a4688777936b0a58b60014349f016aef7"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a4688777936b0a58b60014349f016aef7">Graphics3D::_rx</a></div><div class="ttdeci">float _rx</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00137">Graphics3D.h:137</a></div></div>
<div class="ttc" id="class_draw_list_html_ae4b99509d0985cf5302c0ce09e6eb715"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#ae4b99509d0985cf5302c0ce09e6eb715">DrawList::getGCPos</a></div><div class="ttdeci">const std::vector&lt; double &gt; &amp; getGCPos(size_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00265">DrawList.h:265</a></div></div>
<div class="ttc" id="class_draw_list_html_aaee2e45bbb2e8a546feafbedf967d034"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#aaee2e45bbb2e8a546feafbedf967d034">DrawList::getColorArray</a></div><div class="ttdeci">float * getColorArray()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00121">DrawList.h:121</a></div></div>
<div class="ttc" id="struct_visualization_data_html_acafc627b43500644d9cb912826845022"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#acafc627b43500644d9cb912826845022">VisualizationData::blocks</a></div><div class="ttdeci">BlockVisualization blocks[VISUALIZATION_MAX_ITEMS]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00064">VisualizationData.h:64</a></div></div>
<div class="ttc" id="class_draw_list_html_ad7d97925f1406d116bbbb31f53c2da88"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#ad7d97925f1406d116bbbb31f53c2da88">DrawList::_instanceColor</a></div><div class="ttdeci">vectorAligned&lt; SolidColor &gt; _instanceColor</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00278">DrawList.h:278</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a5a26d600296dffb268108c84bfbb342f"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a5a26d600296dffb268108c84bfbb342f">Graphics3D::updateCameraMatrix</a></div><div class="ttdeci">void updateCameraMatrix()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00128">Graphics3D.cpp:128</a></div></div>
<div class="ttc" id="struct_cone_visualization_html"><div class="ttname"><a href="../../df/da6/struct_cone_visualization.html">ConeVisualization</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00053">VisualizationData.h:53</a></div></div>
<div class="ttc" id="class_draw_list_html_a9638d3da87f1198fdcb32d2b624f937d"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a9638d3da87f1198fdcb32d2b624f937d">DrawList::getHeightMapLeftCorner</a></div><div class="ttdeci">const Vec3&lt; double &gt; &amp; getHeightMapLeftCorner()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00270">DrawList.h:270</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a1f8b47f59c3960c71773faad932eac2e"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a1f8b47f59c3960c71773faad932eac2e">Graphics3D::wheelEvent</a></div><div class="ttdeci">void wheelEvent(QWheelEvent *e) override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00230">Graphics3D.cpp:230</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a0b626c2d1757985f4dd53bacad38c8e2"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a0b626c2d1757985f4dd53bacad38c8e2">Graphics3D::_Additional_Drawing</a></div><div class="ttdeci">void _Additional_Drawing(int pass)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00679">Graphics3D.cpp:679</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aed9ababb8291d2a1dc05c372a10d512d"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aed9ababb8291d2a1dc05c372a10d512d">Graphics3D::_colorArrayProgram</a></div><div class="ttdeci">QOpenGLShaderProgram * _colorArrayProgram</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00123">Graphics3D.h:123</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a4945d4f24b4be0c063ee3448daa87e24"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a4945d4f24b4be0c063ee3448daa87e24">Graphics3D::configOpenGLPass</a></div><div class="ttdeci">void configOpenGLPass(int pass)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00437">Graphics3D.cpp:437</a></div></div>
<div class="ttc" id="struct_sphere_visualization_html_aea69e24257acb3572997bf10ac849aa5"><div class="ttname"><a href="../../d7/d94/struct_sphere_visualization.html#aea69e24257acb3572997bf10ac849aa5">SphereVisualization::color</a></div><div class="ttdeci">Vec4&lt; float &gt; color</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00017">VisualizationData.h:17</a></div></div>
<div class="ttc" id="_graphics3_d_8cpp_html_a7637747bcff189f2336ced5c6ed13730"><div class="ttname"><a href="../../d7/d90/_graphics3_d_8cpp.html#a7637747bcff189f2336ced5c6ed13730">vertexShaderSourceColorArray</a></div><div class="ttdeci">static constexpr char vertexShaderSourceColorArray[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00019">Graphics3D.cpp:19</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ab827a56c12d8bd1f08c3d24e2b520e99"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ab827a56c12d8bd1f08c3d24e2b520e99">Graphics3D::_translate</a></div><div class="ttdeci">void _translate(const Vec3&lt; float &gt; &amp;position)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00101">Graphics3D.h:101</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aed2632dbf9e0c7e3d5c0336738957cd8"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aed2632dbf9e0c7e3d5c0336738957cd8">Graphics3D::_DrawContactForce</a></div><div class="ttdeci">void _DrawContactForce()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00722">Graphics3D.cpp:722</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html_a8398c9cd961da4ed3a90da46ec073a58"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html#a8398c9cd961da4ed3a90da46ec073a58">ArrowVisualization::head_width</a></div><div class="ttdeci">float head_width</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00032">VisualizationData.h:32</a></div></div>
<div class="ttc" id="class_graphics3_d_html_af320ca8b65460c371d0b76e605a03d07"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#af320ca8b65460c371d0b76e605a03d07">Graphics3D::_rotateZtoDirection</a></div><div class="ttdeci">void _rotateZtoDirection(const Vec3&lt; float &gt; &amp;direction)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00764">Graphics3D.cpp:764</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ae6f43e997bd50470a6661bf463573576"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ae6f43e997bd50470a6661bf463573576">Graphics3D::_pixel_to_rad</a></div><div class="ttdeci">float _pixel_to_rad</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00139">Graphics3D.h:139</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aedadc120fa1496885078212dc7ac28e4"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aedadc120fa1496885078212dc7ac28e4">Graphics3D::_colAttrColorArray</a></div><div class="ttdeci">GLuint _colAttrColorArray</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00110">Graphics3D.h:110</a></div></div>
<div class="ttc" id="class_draw_list_html_a0c41b0aa912c97b04b58c6fcedcb34a0"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a0c41b0aa912c97b04b58c6fcedcb34a0">DrawList::getSizeOfAllData</a></div><div class="ttdeci">size_t getSizeOfAllData()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00116">DrawList.h:116</a></div></div>
<div class="ttc" id="struct_sphere_visualization_html"><div class="ttname"><a href="../../d7/d94/struct_sphere_visualization.html">SphereVisualization</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00015">VisualizationData.h:15</a></div></div>
<div class="ttc" id="class_draw_list_html_ac5b1d94476402e453f2b3446ed846edc"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#ac5b1d94476402e453f2b3446ed846edc">DrawList::getNumObjectsToDraw</a></div><div class="ttdeci">size_t getNumObjectsToDraw()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00085">DrawList.h:85</a></div></div>
<div class="ttc" id="class_draw_list_html_abb4874ec78af884a830aef981e580137"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#abb4874ec78af884a830aef981e580137">DrawList::getModelKinematicTransform</a></div><div class="ttdeci">QMatrix4x4 &amp; getModelKinematicTransform(size_t i)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00134">DrawList.h:134</a></div></div>
<div class="ttc" id="class_draw_list_html_ab7f8da510907ff8c2a00488dba9f1631"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#ab7f8da510907ff8c2a00488dba9f1631">DrawList::getHeightMapMax</a></div><div class="ttdeci">const double &amp; getHeightMapMax()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00273">DrawList.h:273</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a3ad8867817743b9f588cc472837d5a02"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a3ad8867817743b9f588cc472837d5a02">Graphics3D::_colAttrSolidColor</a></div><div class="ttdeci">GLuint _colAttrSolidColor</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00116">Graphics3D.h:116</a></div></div>
<div class="ttc" id="struct_path_visualization_html"><div class="ttname"><a href="../../d1/d06/struct_path_visualization.html">PathVisualization</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00044">VisualizationData.h:44</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa0d5bd0263d0b8d44a759f9621c20a01"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa0d5bd0263d0b8d44a759f9621c20a01">Graphics3D::_driverCommand</a></div><div class="ttdeci">GamepadCommand _driverCommand</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00081">Graphics3D.h:81</a></div></div>
<div class="ttc" id="class_draw_list_html_abd07faa05bc696fb43bd0fdb9467dfe5"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#abd07faa05bc696fb43bd0fdb9467dfe5">DrawList::getVertexArray</a></div><div class="ttdeci">float * getVertexArray()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00108">DrawList.h:108</a></div></div>
<div class="ttc" id="class_draw_list_html_a1e061a3a3e49ebfa5cda903410138397"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a1e061a3a3e49ebfa5cda903410138397">DrawList::getTotalNumGC</a></div><div class="ttdeci">const size_t &amp; getTotalNumGC()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00264">DrawList.h:264</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a5586b9a611c9973859e607e24d7b72d6"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a5586b9a611c9973859e607e24d7b72d6">Graphics3D::mousePressEvent</a></div><div class="ttdeci">void mousePressEvent(QMouseEvent *event) override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00210">Graphics3D.cpp:210</a></div></div>
<div class="ttc" id="struct_visualization_data_html_a1b8df7759f0915a5e03d6c21842bb1ef"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#a1b8df7759f0915a5e03d6c21842bb1ef">VisualizationData::num_arrows</a></div><div class="ttdeci">size_t num_arrows</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00061">VisualizationData.h:61</a></div></div>
<div class="ttc" id="cpp_types_8h_html_a738072d0d6a7a632be68f6261501826b"><div class="ttname"><a href="../../d9/d8e/cpp_types_8h.html#a738072d0d6a7a632be68f6261501826b">Vec4</a></div><div class="ttdeci">typename Eigen::Matrix&lt; T, 4, 1 &gt; Vec4</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/d8e/cpp_types_8h_source.html#l00030">cppTypes.h:30</a></div></div>
<div class="ttc" id="_graphics3_d_8cpp_html_af71db2fb04cedbd9e3c5ecfef59668f5"><div class="ttname"><a href="../../d7/d90/_graphics3_d_8cpp.html#af71db2fb04cedbd9e3c5ecfef59668f5">clearColor</a></div><div class="ttdeci">static constexpr auto clearColor</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00016">Graphics3D.cpp:16</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a61817c6a3efa40dfb0d85672f3aaebde"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a61817c6a3efa40dfb0d85672f3aaebde">Graphics3D::_MeshObstacleDrawing</a></div><div class="ttdeci">void _MeshObstacleDrawing()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00519">Graphics3D.cpp:519</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a3f50b915849e74cec3bfb5c4829e039e"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a3f50b915849e74cec3bfb5c4829e039e">Graphics3D::_pause</a></div><div class="ttdeci">bool _pause</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00166">Graphics3D.h:166</a></div></div>
<div class="ttc" id="_colors_8h_html_a8b1b724c488ffbaa024bb0e9088e447b"><div class="ttname"><a href="../../dc/daa/_colors_8h.html#a8b1b724c488ffbaa024bb0e9088e447b">windows2000</a></div><div class="ttdeci">static constexpr float windows2000[]</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/daa/_colors_8h_source.html#l00010">Colors.h:10</a></div></div>
<div class="ttc" id="struct_sphere_visualization_html_ae15c3cbfe6ba95ebf879911322fc6106"><div class="ttname"><a href="../../d7/d94/struct_sphere_visualization.html#ae15c3cbfe6ba95ebf879911322fc6106">SphereVisualization::radius</a></div><div class="ttdeci">double radius</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00018">VisualizationData.h:18</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a322467ce2efdc212fe61c0cd782aa8f2"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a322467ce2efdc212fe61c0cd782aa8f2">Graphics3D::setAnimating</a></div><div class="ttdeci">void setAnimating(bool animating)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00331">Graphics3D.cpp:331</a></div></div>
<div class="ttc" id="class_graphics3_d_html_adbe928409323c80c5ec30015a56ae4e9"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#adbe928409323c80c5ec30015a56ae4e9">Graphics3D::_cameraMatrix</a></div><div class="ttdeci">QMatrix4x4 _cameraMatrix</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00145">Graphics3D.h:145</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa29eb71732ed62ad434b89c82a5d7bd1"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa29eb71732ed62ad434b89c82a5d7bd1">Graphics3D::_orbiting</a></div><div class="ttdeci">bool _orbiting</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00132">Graphics3D.h:132</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a4074875fcc8c6b773aeb168f1ed5a003"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a4074875fcc8c6b773aeb168f1ed5a003">Graphics3D::mouseReleaseEvent</a></div><div class="ttdeci">void mouseReleaseEvent(QMouseEvent *event) override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00224">Graphics3D.cpp:224</a></div></div>
<div class="ttc" id="namespaceori_html_abb3365c40bad692ba94734339d8c9df9"><div class="ttname"><a href="../../da/d9b/namespaceori.html#abb3365c40bad692ba94734339d8c9df9">ori::deg2rad</a></div><div class="ttdeci">T deg2rad(T deg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d4/dfb/orientation__tools_8h_source.html#l00048">orientation_tools.h:48</a></div></div>
<div class="ttc" id="class_draw_list_html_a2c6f1f169cca762878ec1a46e4dbfcba"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a2c6f1f169cca762878ec1a46e4dbfcba">DrawList::getGLDrawArraySize</a></div><div class="ttdeci">size_t getGLDrawArraySize(size_t i)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00100">DrawList.h:100</a></div></div>
<div class="ttc" id="struct_visualization_data_html_a41efc7d1cf72a420f12faaf4b35d5302"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#a41efc7d1cf72a420f12faaf4b35d5302">VisualizationData::num_paths</a></div><div class="ttdeci">size_t num_paths</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00061">VisualizationData.h:61</a></div></div>
<div class="ttc" id="class_graphics3_d_html_adfa1218d3a0f71638ad7095d2efe51aa"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#adfa1218d3a0f71638ad7095d2efe51aa">Graphics3D::_drawArrow</a></div><div class="ttdeci">void _drawArrow(ArrowVisualization &amp;arrow)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00835">Graphics3D.cpp:835</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a032dd97a8cbef2ae6b496951d4a7d869"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a032dd97a8cbef2ae6b496951d4a7d869">Graphics3D::last_frame_ms</a></div><div class="ttdeci">qint64 last_frame_ms</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00129">Graphics3D.h:129</a></div></div>
<div class="ttc" id="struct_visualization_data_html_ae2682101eb8ddbe0e7e0fc064cdc3747"><div class="ttname"><a href="../../d3/d60/struct_visualization_data.html#ae2682101eb8ddbe0e7e0fc064cdc3747">VisualizationData::paths</a></div><div class="ttdeci">PathVisualization paths[VISUALIZATION_MAX_PATHS]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00067">VisualizationData.h:67</a></div></div>
<div class="ttc" id="class_draw_list_html_a55249ea44dfcabccd883215d9132a11c"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a55249ea44dfcabccd883215d9132a11c">DrawList::needsReload</a></div><div class="ttdeci">bool needsReload()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00153">DrawList.h:153</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a8040e69c06bbb0bafefeef46cf18d3e7"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a8040e69c06bbb0bafefeef46cf18d3e7">Graphics3D::_frameTime</a></div><div class="ttdeci">float _frameTime</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00152">Graphics3D.h:152</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ad92efa791431ec78b240c65c30df37e5"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ad92efa791431ec78b240c65c30df37e5">Graphics3D::paintGL</a></div><div class="ttdeci">void paintGL() override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00477">Graphics3D.cpp:477</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ad890ef439ce683da82d6300ae68f7c5d"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ad890ef439ce683da82d6300ae68f7c5d">Graphics3D::_cameraTarget</a></div><div class="ttdeci">Vec3&lt; double &gt; _cameraTarget</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00147">Graphics3D.h:147</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa664c76bf1128becb4dd2ea673465fec"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa664c76bf1128becb4dd2ea673465fec">Graphics3D::_freeCamPos</a></div><div class="ttdeci">float _freeCamPos[3]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00151">Graphics3D.h:151</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ad2337fdc4249a7c85607a5871da709ac"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ad2337fdc4249a7c85607a5871da709ac">Graphics3D::_ry</a></div><div class="ttdeci">float _ry</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00138">Graphics3D.h:138</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a950380fbd120149654025042e5f9316c"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a950380fbd120149654025042e5f9316c">Graphics3D::_DrawBox</a></div><div class="ttdeci">void _DrawBox(double depth, double width, double height)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00629">Graphics3D.cpp:629</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html_acc67bc1e7c7b68a0dd34e274d3fba74d"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html#acc67bc1e7c7b68a0dd34e274d3fba74d">ArrowVisualization::base_position</a></div><div class="ttdeci">Vec3&lt; float &gt; base_position</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00029">VisualizationData.h:29</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html_ae555905f140ddf3b76d5b73decbd95f4"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html#ae555905f140ddf3b76d5b73decbd95f4">ArrowVisualization::head_length</a></div><div class="ttdeci">float head_length</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00033">VisualizationData.h:33</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html_adb09f8cc38aefd6032b4cddd49b55303"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html#adb09f8cc38aefd6032b4cddd49b55303">ArrowVisualization::direction</a></div><div class="ttdeci">Vec3&lt; float &gt; direction</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00030">VisualizationData.h:30</a></div></div>
<div class="ttc" id="struct_path_visualization_html_aa42936e8c4d6308aafba7af06b34df74"><div class="ttname"><a href="../../d1/d06/struct_path_visualization.html#aa42936e8c4d6308aafba7af06b34df74">PathVisualization::position</a></div><div class="ttdeci">Vec3&lt; float &gt; position[VISUALIZATION_MAX_PATH_POINTS]</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00047">VisualizationData.h:47</a></div></div>
<div class="ttc" id="class_draw_list_html_a394291a36ef4635a0c1ae25462d8ac5b"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a394291a36ef4635a0c1ae25462d8ac5b">DrawList::getBoxInfoList</a></div><div class="ttdeci">const std::vector&lt; BoxInfo &gt; &amp; getBoxInfoList()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00267">DrawList.h:267</a></div></div>
<div class="ttc" id="class_draw_list_html_ae20412e460d33e4dded35cb43818ae17"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#ae20412e460d33e4dded35cb43818ae17">DrawList::getGLDrawArrayOffset</a></div><div class="ttdeci">size_t getGLDrawArrayOffset(size_t i)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00093">DrawList.h:93</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ac58b856e44f7c0a124ccecc0021525e1"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ac58b856e44f7c0a124ccecc0021525e1">Graphics3D::_rotOrig</a></div><div class="ttdeci">bool _rotOrig</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00142">Graphics3D.h:142</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a540f27ed54499fb031a045a6292a9922"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a540f27ed54499fb031a045a6292a9922">Graphics3D::_BoxObstacleDrawing</a></div><div class="ttdeci">void _BoxObstacleDrawing()</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00611">Graphics3D.cpp:611</a></div></div>
<div class="ttc" id="struct_block_visualization_html_a26fc4f3ea8bc078585cf0ffad9c40ddb"><div class="ttname"><a href="../../d5/d38/struct_block_visualization.html#a26fc4f3ea8bc078585cf0ffad9c40ddb">BlockVisualization::dimension</a></div><div class="ttdeci">Vec3&lt; float &gt; dimension</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00022">VisualizationData.h:22</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a6818e4ab43d79ec03536ae17494643a9"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a6818e4ab43d79ec03536ae17494643a9">Graphics3D::_matrixUniformSolidColor</a></div><div class="ttdeci">GLuint _matrixUniformSolidColor</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00117">Graphics3D.h:117</a></div></div>
<div class="ttc" id="class_draw_list_html_a1da39873b6f2f1c605c49678247e23e0"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a1da39873b6f2f1c605c49678247e23e0">DrawList::getGridSize</a></div><div class="ttdeci">const double &amp; getGridSize()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00275">DrawList.h:275</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa7f5cf1109caec4c347a2b2536f32e64"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa7f5cf1109caec4c347a2b2536f32e64">Graphics3D::_setColor</a></div><div class="ttdeci">void _setColor(const Vec4&lt; float &gt; &amp;color)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00098">Graphics3D.h:98</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aa302cc6ac67936115c133c2575a5db02"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aa302cc6ac67936115c133c2575a5db02">Graphics3D::_r</a></div><div class="ttdeci">float _r[8]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00158">Graphics3D.h:158</a></div></div>
<div class="ttc" id="class_graphics3_d_html_af4a38ac4c3cb98d9720acd07dd1ff38a"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#af4a38ac4c3cb98d9720acd07dd1ff38a">Graphics3D::_drawSphere</a></div><div class="ttdeci">void _drawSphere(SphereVisualization &amp;sphere)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00799">Graphics3D.cpp:799</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a77d7e3d1b4610344616dcdd00e12102d"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a77d7e3d1b4610344616dcdd00e12102d">Graphics3D::_rx_base</a></div><div class="ttdeci">float _rx_base</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00135">Graphics3D.h:135</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a0337ad2e6558d485fca229ee6173235b"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a0337ad2e6558d485fca229ee6173235b">Graphics3D::_b</a></div><div class="ttdeci">float _b[8]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00160">Graphics3D.h:160</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a7114c7c0a652b50cb1f32c4f62767f92"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a7114c7c0a652b50cb1f32c4f62767f92">Graphics3D::_SetRGBHeight</a></div><div class="ttdeci">void _SetRGBHeight(const double &amp;h, const double &amp;step, const int &amp;idx, float &amp;r, float &amp;g, float &amp;b)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00603">Graphics3D.cpp:603</a></div></div>
<div class="ttc" id="class_draw_list_html_acaddb6c8d3e5dae59c9c6cf7b0ba1e00"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#acaddb6c8d3e5dae59c9c6cf7b0ba1e00">DrawList::getModelBaseTransform</a></div><div class="ttdeci">QMatrix4x4 &amp; getModelBaseTransform(size_t i)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00128">DrawList.h:128</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a409518e1b8146001fbaddaaac4d8f80a"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a409518e1b8146001fbaddaaac4d8f80a">Graphics3D::_orbiting_y_start</a></div><div class="ttdeci">int _orbiting_y_start</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00134">Graphics3D.h:134</a></div></div>
<div class="ttc" id="struct_block_visualization_html"><div class="ttname"><a href="../../d5/d38/struct_block_visualization.html">BlockVisualization</a></div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00021">VisualizationData.h:21</a></div></div>
<div class="ttc" id="struct_arrow_visualization_html_aac169a55027330b9a39e1d831252db4d"><div class="ttname"><a href="../../d4/d7b/struct_arrow_visualization.html#aac169a55027330b9a39e1d831252db4d">ArrowVisualization::shaft_width</a></div><div class="ttdeci">float shaft_width</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00034">VisualizationData.h:34</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ad3fc4b427cbf7cf288542710fa43c616"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ad3fc4b427cbf7cf288542710fa43c616">Graphics3D::_targetSpeed</a></div><div class="ttdeci">float _targetSpeed</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00156">Graphics3D.h:156</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a20485c7a1ff5956dd899e90527324b18"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a20485c7a1ff5956dd899e90527324b18">Graphics3D::_posAttrColorArray</a></div><div class="ttdeci">GLuint _posAttrColorArray</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00109">Graphics3D.h:109</a></div></div>
<div class="ttc" id="struct_sphere_visualization_html_aed59e2de0afb354c9884b50cacf1ec01"><div class="ttname"><a href="../../d7/d94/struct_sphere_visualization.html#aed59e2de0afb354c9884b50cacf1ec01">SphereVisualization::position</a></div><div class="ttdeci">Vec3&lt; float &gt; position</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00016">VisualizationData.h:16</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a1208df0fe1f06f574c32661ddd7529ca"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a1208df0fe1f06f574c32661ddd7529ca">Graphics3D::_posAttrSolidColor</a></div><div class="ttdeci">GLuint _posAttrSolidColor</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00114">Graphics3D.h:114</a></div></div>
<div class="ttc" id="class_graphics3_d_html_af61d4deba2823af20e7a8ee4ba566936"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#af61d4deba2823af20e7a8ee4ba566936">Graphics3D::_normAttrSolidColor</a></div><div class="ttdeci">GLuint _normAttrSolidColor</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00118">Graphics3D.h:118</a></div></div>
<div class="ttc" id="cpp_types_8h_html_a0b83d93a3c74d282558436e26c056896"><div class="ttname"><a href="../../d9/d8e/cpp_types_8h.html#a0b83d93a3c74d282558436e26c056896">RotMat</a></div><div class="ttdeci">typename Eigen::Matrix&lt; T, 3, 3 &gt; RotMat</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/d8e/cpp_types_8h_source.html#l00018">cppTypes.h:18</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a5486700fa1514220acfd22461ecb37d9"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a5486700fa1514220acfd22461ecb37d9">Graphics3D::_drawCone</a></div><div class="ttdeci">void _drawCone(ConeVisualization &amp;cone)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00808">Graphics3D.cpp:808</a></div></div>
<div class="ttc" id="class_graphics3_d_html_aca2d6f8222a6a75c3a8cdc5670454814"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#aca2d6f8222a6a75c3a8cdc5670454814">Graphics3D::_freeCamMove</a></div><div class="ttdeci">float _freeCamMove[3]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00150">Graphics3D.h:150</a></div></div>
<div class="ttc" id="struct_cone_visualization_html_acd89586de3ff5b357d8b4ff351623170"><div class="ttname"><a href="../../df/da6/struct_cone_visualization.html#acd89586de3ff5b357d8b4ff351623170">ConeVisualization::radius</a></div><div class="ttdeci">double radius</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d0d/_visualization_data_8h_source.html#l00057">VisualizationData.h:57</a></div></div>
<div class="ttc" id="class_draw_list_html_a0c2c941704b8e8099f5dc4fb7f2d13f9"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a0c2c941704b8e8099f5dc4fb7f2d13f9">DrawList::getGCForce</a></div><div class="ttdeci">const std::vector&lt; double &gt; &amp; getGCForce(size_t idx)</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00266">DrawList.h:266</a></div></div>
<div class="ttc" id="class_draw_list_html_ae2b3381013216191dbfe884adf21c0dd"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#ae2b3381013216191dbfe884adf21c0dd">DrawList::getHeightMap</a></div><div class="ttdeci">const DMat&lt; double &gt; &amp; getHeightMap()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00269">DrawList.h:269</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a25aaa7b3d8385228211e27380d84407f"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a25aaa7b3d8385228211e27380d84407f">Graphics3D::Graphics3D</a></div><div class="ttdeci">Graphics3D(QWidget *parent=0)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00077">Graphics3D.cpp:77</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ab325796e856cbad5652d35436d48b942"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ab325796e856cbad5652d35436d48b942">Graphics3D::_drawList</a></div><div class="ttdeci">DrawList _drawList</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00049">Graphics3D.h:49</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ab286b1fe6a6e092cb50c353b1acb8515"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ab286b1fe6a6e092cb50c353b1acb8515">Graphics3D::_zoom</a></div><div class="ttdeci">float _zoom</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00140">Graphics3D.h:140</a></div></div>
<div class="ttc" id="class_graphics3_d_html_ae9d5e85cf9f776c5ff83294b7d9253a9"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#ae9d5e85cf9f776c5ff83294b7d9253a9">Graphics3D::mouseMoveEvent</a></div><div class="ttdeci">void mouseMoveEvent(QMouseEvent *event) override</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d90/_graphics3_d_8cpp_source.html#l00218">Graphics3D.cpp:218</a></div></div>
<div class="ttc" id="class_draw_list_html_a669c697866c96ab734e134811f047afc"><div class="ttname"><a href="../../d1/d03/class_draw_list.html#a669c697866c96ab734e134811f047afc">DrawList::getHeightMapMin</a></div><div class="ttdeci">const double &amp; getHeightMapMin()</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d65/_draw_list_8h_source.html#l00274">DrawList.h:274</a></div></div>
<div class="ttc" id="_graphics3_d_8h_html"><div class="ttname"><a href="../../d2/de7/_graphics3_d_8h.html">Graphics3D.h</a></div><div class="ttdoc">Visualizer window for simulator. </div></div>
<div class="ttc" id="class_graphics3_d_html_a53f0426286da70da7dbca33759a7e90b"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a53f0426286da70da7dbca33759a7e90b">Graphics3D::_animating</a></div><div class="ttdeci">bool _animating</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00106">Graphics3D.h:106</a></div></div>
<div class="ttc" id="test__casadi_8cpp_html_ae20d7fba59865a21504b65cdb44cbfe5"><div class="ttname"><a href="../../dc/dd7/test__casadi_8cpp.html#ae20d7fba59865a21504b65cdb44cbfe5">f</a></div><div class="ttdeci">MX f(const MX &amp;x, const MX &amp;u)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd7/test__casadi_8cpp_source.html#l00202">test_casadi.cpp:202</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a1113a4cce78fa8cf7919afc5dda360d5"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a1113a4cce78fa8cf7919afc5dda360d5">Graphics3D::infoString</a></div><div class="ttdeci">char infoString[200]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00050">Graphics3D.h:50</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a5d2cbcb27945207c5efe2707d0b6ddfe"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a5d2cbcb27945207c5efe2707d0b6ddfe">Graphics3D::_fps</a></div><div class="ttdeci">double _fps</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00048">Graphics3D.h:48</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a41a320a73f0a6439e988640a31c9ce5a"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a41a320a73f0a6439e988640a31c9ce5a">Graphics3D::_matrixUniformColorArray</a></div><div class="ttdeci">GLuint _matrixUniformColorArray</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00111">Graphics3D.h:111</a></div></div>
<div class="ttc" id="class_graphics3_d_html_a4340882a8b3faed7fa712d00d36f6103"><div class="ttname"><a href="../../de/d6f/class_graphics3_d.html#a4340882a8b3faed7fa712d00d36f6103">Graphics3D::_color1</a></div><div class="ttdeci">float _color1[3]</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/de7/_graphics3_d_8h_source.html#l00075">Graphics3D.h:75</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="../../dir_43e0a1f539e00dcfa1a6bc4d4fee4fc2.html">home</a></li><li class="navelem"><a class="el" href="../../dir_61bfb0b3cdda81b1b0355ba34eb3b1eb.html">dhkim</a></li><li class="navelem"><a class="el" href="../../dir_adee5b101e079090017bb4e91c628ead.html">Public_Repository</a></li><li class="navelem"><a class="el" href="../../dir_7fc07a7b97001e7b1d18e11da761e2de.html">Cheetah-Software</a></li><li class="navelem"><a class="el" href="../../dir_e380f5e928ac62e3c78e1e401f2404bd.html">sim</a></li><li class="navelem"><a class="el" href="../../dir_a016bb1cae11d95bfbad53e4af068c30.html">src</a></li><li class="navelem"><a class="el" href="../../d7/d90/_graphics3_d_8cpp.html">Graphics3D.cpp</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="../../doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
